diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-02-03 18:34:56 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-02-03 18:34:56 +0100 |
commit | 437f0a81bdd733c66a0ed6172ccd2ac6a0e623d4 (patch) | |
tree | 36e22b4bb1d13399138350ad2ff5a919ac53f28b | |
parent | 3f3430400b2ce552a5dbdae49a3a482687b96afa (diff) | |
download | gcc-437f0a81bdd733c66a0ed6172ccd2ac6a0e623d4.zip gcc-437f0a81bdd733c66a0ed6172ccd2ac6a0e623d4.tar.gz gcc-437f0a81bdd733c66a0ed6172ccd2ac6a0e623d4.tar.bz2 |
re PR target/79354 (-mcpu=power8 -O2 generates power9 instruction on powerpc64le-linux)
PR target/79354
* config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
wu for stxssp alternative.
* gcc.target/powerpc/pr79354.c: New test.
* gcc.c-torture/execute/pr79354.c: New test.
From-SVN: r245157
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr79354.c | 30 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr79354.c | 22 |
5 files changed, 65 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8203a4..a1db127 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-02-03 Jakub Jelinek <jakub@redhat.com> + + PR target/79354 + * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of + wu for stxssp alternative. + 2017-02-03 Martin Sebor <msebor@redhat.com> PR tree-optimization/79352 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index bb0927f..fca6de0 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -6814,7 +6814,7 @@ (unspec:SI [(match_operand:SF 1 "input_operand" "r, m, Z, Z, r, - f, wu, wu, wIwH, r, + f, wb, wu, wIwH, r, wK")] UNSPEC_SI_FROM_SF)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ff8ce70..0595ff6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-02-03 Jakub Jelinek <jakub@redhat.com> + + PR target/79354 + * gcc.target/powerpc/pr79354.c: New test. + * gcc.c-torture/execute/pr79354.c: New test. + 2017-02-03 Martin Sebor <msebor@redhat.com> PR tree-optimization/79352 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr79354.c b/gcc/testsuite/gcc.c-torture/execute/pr79354.c new file mode 100644 index 0000000..c196155 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr79354.c @@ -0,0 +1,30 @@ +/* PR target/79354 */ + +int b, f, g; +float e; +unsigned long d; + +__attribute__((noinline, noclone)) void +foo (int *a) +{ + for (g = 0; g < 32; g++) + if (f) + { + e = d; + __builtin_memcpy (&b, &e, sizeof (float)); + b = *a; + } +} + +int +main () +{ + int h = 5; + f = 1; + asm volatile ("" : : : "memory"); + foo (&h); + asm volatile ("" : : : "memory"); + foo (&b); + asm volatile ("" : : : "memory"); + return 0; +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr79354.c b/gcc/testsuite/gcc.target/powerpc/pr79354.c new file mode 100644 index 0000000..0806df0 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr79354.c @@ -0,0 +1,22 @@ +/* PR target/79354 */ +/* { dg-do compile } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mcpu=power8 -O2" } */ +/* { dg-final { scan-assembler-not {\mstxssp\M} } } */ + +int b, f, g; +float e; +unsigned long d; + +void +foo (int *a) +{ + for (g = 0; g < 32; g++) + if (f) + { + e = d; + __builtin_memcpy (&b, &e, sizeof (float)); + b = *a; + } +} |