aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-02-03 18:34:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-02-03 18:34:56 +0100
commit437f0a81bdd733c66a0ed6172ccd2ac6a0e623d4 (patch)
tree36e22b4bb1d13399138350ad2ff5a919ac53f28b
parent3f3430400b2ce552a5dbdae49a3a482687b96afa (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr79354.c30
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79354.c22
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;
+ }
+}