diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-01-26 22:28:57 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-01-26 22:28:57 +0100 |
commit | 4cd76837a875b2c2ef619dd44eca555d487573f6 (patch) | |
tree | 22837e6f32b901b17927ba57071242ad6f17f7fb /gcc | |
parent | b25affbdc1fab885366de251e04e2e56d0b4f6cc (diff) | |
download | gcc-4cd76837a875b2c2ef619dd44eca555d487573f6.zip gcc-4cd76837a875b2c2ef619dd44eca555d487573f6.tar.gz gcc-4cd76837a875b2c2ef619dd44eca555d487573f6.tar.bz2 |
re PR middle-end/64421 (Incorrect vector function name generated for log)
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.
From-SVN: r220137
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-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, 52 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cb42a5a..f10bfb7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. + 2015-01-26 H.J. Lu <hongjiu.lu@intel.com> PR target/64806 diff --git a/gcc/omp-low.c b/gcc/omp-low.c index da53334..182836b 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -12663,9 +12663,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 7fabc03..64162b0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-01-26 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/64421 + * gcc.dg/vect/pr64421.c: New test. + 2015-01-26 Tobias Burnus <burnus@net-b.de> PR fortran/64771 diff --git a/gcc/testsuite/gcc.dg/vect/pr64421.c b/gcc/testsuite/gcc.dg/vect/pr64421.c new file mode 100644 index 0000000..7e48a8b --- /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" } } */ |