openmp: Fix ICE in omp_discover_declare_target_tgt_fn_r
This ICEs because node->alias_target is (not yet) a FUNCTION_DECL, but IDENTIFIER_NODE. I guess we should retry the discovery before LTO streaming out, the reason to do it this early is that it can affect the gimplification and omp lowering. 2020-10-06 Jakub Jelinek <jakub@redhat.com> PR middle-end/97289 * omp-offload.c (omp_discover_declare_target_tgt_fn_r): Only follow node->alias_target if it is a FUNCTION_DECL. * c-c++-common/gomp/pr97289.c: New test.
This commit is contained in:
parent
3e8fb15a8c
commit
44e20dce59
2 changed files with 16 additions and 1 deletions
|
@ -203,7 +203,8 @@ omp_discover_declare_target_tgt_fn_r (tree *tp, int *walk_subtrees, void *data)
|
|||
symtab_node *node = symtab_node::get (*tp);
|
||||
if (node != NULL)
|
||||
{
|
||||
while (node->alias_target)
|
||||
while (node->alias_target
|
||||
&& TREE_CODE (node->alias_target) == FUNCTION_DECL)
|
||||
{
|
||||
if (!omp_declare_target_fn_p (node->decl)
|
||||
&& !lookup_attribute ("omp declare target host",
|
||||
|
|
14
gcc/testsuite/c-c++-common/gomp/pr97289.c
Normal file
14
gcc/testsuite/c-c++-common/gomp/pr97289.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
/* PR middle-end/97289 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-weak "" } */
|
||||
/* { dg-skip-if "" { "hppa*-*-hpux*" "*-*-aix*" "nvptx-*-*" } } */
|
||||
|
||||
void foo (void);
|
||||
static void bar (void) __attribute__ ((__weakref__ ("foo")));
|
||||
|
||||
void
|
||||
baz (void)
|
||||
{
|
||||
#pragma omp target
|
||||
bar ();
|
||||
}
|
Loading…
Add table
Reference in a new issue