diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-02-01 17:34:50 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2015-02-01 17:34:50 +0000 |
commit | bdc5fe592b39c71e7e5922fe81e4beae47161021 (patch) | |
tree | 13f46dd12792fb4e1fe840941373e13a17a7d17d | |
parent | 67a0251e7c119b8e5013aab656aa5442847dde78 (diff) |
Backported from mainline
2015-01-26 Jakub Jelinek <jakub@redhat.com>
PR middle-end/64421
* omp-low.c (simd_clone_mangle): If DECL_ASSEMBLER_NAME starts
with asterisk, skip the first character.
* gcc.dg/vect/pr64421.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@220325 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/omp-low.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr64421.c | 36 |
4 files changed, 50 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb8617dd511..13763900ee2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backported from mainline 2015-01-26 Jakub Jelinek <jakub@redhat.com> + PR middle-end/64421 + * omp-low.c (simd_clone_mangle): If DECL_ASSEMBLER_NAME starts + with asterisk, skip the first character. + * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_QUAD_MEMORY_ATOMIC. diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 6d9206c9530..f0059be6b5d 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -11106,9 +11106,11 @@ simd_clone_mangle (struct cgraph_node *node, } pp_underscore (&pp); - pp_string (&pp, - IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl))); - const char *str = pp_formatted_text (&pp); + const char *str = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl)); + if (*str == '*') + ++str; + pp_string (&pp, str); + str = pp_formatted_text (&pp); /* If there already is a SIMD clone with the same mangled name, don't add another one. This can happen e.g. for diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 594cf32692a..7e1df70e097 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2015-02-01 Jakub Jelinek <jakub@redhat.com> Backported from mainline + 2015-01-26 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/64421 + * gcc.dg/vect/pr64421.c: New test. + 2015-01-23 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/63637 diff --git a/gcc/testsuite/gcc.dg/vect/pr64421.c b/gcc/testsuite/gcc.dg/vect/pr64421.c new file mode 100644 index 00000000000..7e48a8bea47 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr64421.c @@ -0,0 +1,36 @@ +/* PR middle-end/64421 */ +/* { dg-require-effective-target vect_simd_clones } */ +/* { dg-additional-options "-fopenmp-simd" } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#include "tree-vect.h" + +#pragma omp declare simd linear (y) notinbranch +int foo (int x, int y) __asm ("bar"); + +#pragma omp declare simd linear (y) notinbranch +int +foo (int x, int y) +{ + return x + y; +} + +int a[1024] = { 1, 2 }; + +int +main () +{ + int i; + check_vect (); + #pragma omp simd + for (i = 0; i < 1024; i++) + a[i] = foo (a[i], i); + if (a[0] != 1 || a[1] != 3) + abort (); + for (i = 2; i < 1024; i++) + if (a[i] != i) + abort (); + return 0; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ |