From: Jakub Jelinek Date: Thu, 25 Jan 2018 15:32:02 +0000 (+0100) Subject: re PR middle-end/83977 (ICE in simd_clone_clauses_extract, at omp-simd-clone.c:184) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3d8fb311338b191231790252e91889984995055c;p=gcc.git re PR middle-end/83977 (ICE in simd_clone_clauses_extract, at omp-simd-clone.c:184) PR middle-end/83977 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature on functions with #pragma omp declare simd or functions with simd attribute. * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change. * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): Remove trailing \n from warning_at calls. * c-c++-common/gomp/pr83977-1.c: Add -w to dg-options. From-SVN: r257051 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69cbcc69166..65ef87ad44b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2018-01-25 Jakub Jelinek + + PR middle-end/83977 + * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature + on functions with #pragma omp declare simd or functions with simd + attribute. + * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change. + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Remove trailing \n from warning_at calls. + 2018-01-25 Tom de Vries PR target/84028 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index cd681687895..6a49c1a1610 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -50224,7 +50224,7 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, break; default: warning_at (DECL_SOURCE_LOCATION (node->decl), 0, - "unsupported return type %qT for simd\n", ret_type); + "unsupported return type %qT for simd", ret_type); return 0; } @@ -50246,7 +50246,7 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, break; default: warning_at (DECL_SOURCE_LOCATION (node->decl), 0, - "unsupported argument type %qT for simd\n", TREE_TYPE (t)); + "unsupported argument type %qT for simd", TREE_TYPE (t)); return 0; } diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index d45efafd389..bdf9ba1c921 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -2467,7 +2467,11 @@ compute_fn_summary (struct cgraph_node *node, bool early) info->inlinable = tree_inlinable_function_p (node->decl); /* Type attributes can use parameter indices to describe them. */ - if (TYPE_ATTRIBUTES (TREE_TYPE (node->decl))) + if (TYPE_ATTRIBUTES (TREE_TYPE (node->decl)) + /* Likewise for #pragma omp declare simd functions or functions + with simd attribute. */ + || lookup_attribute ("omp declare simd", + DECL_ATTRIBUTES (node->decl))) node->local.can_change_signature = false; else { diff --git a/gcc/omp-simd-clone.c b/gcc/omp-simd-clone.c index fbcb92ba76f..b7737a25824 100644 --- a/gcc/omp-simd-clone.c +++ b/gcc/omp-simd-clone.c @@ -1574,10 +1574,6 @@ expand_simd_clones (struct cgraph_node *node) tree attr = lookup_attribute ("omp declare simd", DECL_ATTRIBUTES (node->decl)); if (attr == NULL_TREE - /* Ignore artificial decls with an abstract origin, results of function - cloning, versioning etc. We want to handle certain builtins - with simd attribute, like __builtin_sin. */ - || (DECL_ARTIFICIAL (node->decl) && DECL_ABSTRACT_ORIGIN (node->decl)) || node->global.inlined_to || lookup_attribute ("noclone", DECL_ATTRIBUTES (node->decl))) return; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 42665a2c64e..8493bcdadd6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-25 Jakub Jelinek + + PR middle-end/83977 + * c-c++-common/gomp/pr83977-1.c: Add -w to dg-options. + 2018-01-25 Richard Sandiford * gcc.dg/vect/vect-reduc-or_1.c: Require whole_vector_shift for diff --git a/gcc/testsuite/c-c++-common/gomp/pr83977-1.c b/gcc/testsuite/c-c++-common/gomp/pr83977-1.c index 9941db49469..bcc42ddbb81 100644 --- a/gcc/testsuite/c-c++-common/gomp/pr83977-1.c +++ b/gcc/testsuite/c-c++-common/gomp/pr83977-1.c @@ -1,6 +1,6 @@ /* PR middle-end/83977 */ /* { dg-do compile } */ -/* { dg-additional-options "-O2" } */ +/* { dg-additional-options "-O2 -w" } */ struct S { int a, b, c; };