aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2016-06-28 07:56:41 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2016-06-28 07:56:41 +0200
commita826405801ce4e28d534e3f693f236405d886caf (patch)
treeb92fe8cfd230d1136925b46281769fb3bcbfe626 /gcc
parent7c788ce223bef845356773178b64de69e753c1b8 (diff)
downloadgcc-a826405801ce4e28d534e3f693f236405d886caf.zip
gcc-a826405801ce4e28d534e3f693f236405d886caf.tar.gz
gcc-a826405801ce4e28d534e3f693f236405d886caf.tar.bz2
rs6000: Fix split of ashdi3_extswsli_dot for memory (PR71670)
The splitter for ashdi3_extswsli_dot for cr0 with memory uses emit_insn gen_ashdi3_extswsli_dot, which does not work because that emits a scratch, while the splitter runs after reload so there should be a real register instead. We can laboriously fix that up, or emit using gen_ashdi3_extswsli_dot2 instead. This patch does the latter. PR target/71670 * config/rs6000/rs6000.md (ashdi3_extswsli_dot): Use gen_ashdi3_extswsli_dot2 instead of gen_ashdi3_extswsli_dot. gcc/testsuite/ PR target/71670 * gcc.target/powerpc/pr71670.c: New testcase. From-SVN: r237813
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr71670.c7
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4c91c5f..6870078 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/71670
+ * config/rs6000/rs6000.md (ashdi3_extswsli_dot): Use
+ gen_ashdi3_extswsli_dot2 instead of gen_ashdi3_extswsli_dot.
+
2016-06-27 Pat Haugen <pthaugen@us.ibm.com>
* config/rs6000/rs6000.md ('type' attribute): Add
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index bb31e41..e8a6205 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -4094,7 +4094,7 @@
if (REGNO (cr) == CR0_REGNO)
{
- emit_insn (gen_ashdi3_extswsli_dot (dest, src2, shift, cr));
+ emit_insn (gen_ashdi3_extswsli_dot2 (dest, src2, shift, cr));
DONE;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7e7cf8b..866cef7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-27 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/71670
+ * gcc.target/powerpc/pr71670.c: New testcase.
+
2016-06-27 Peter Bergner <bergner@vnet.ibm.com>
PR target/71656
diff --git a/gcc/testsuite/gcc.target/powerpc/pr71670.c b/gcc/testsuite/gcc.target/powerpc/pr71670.c
new file mode 100644
index 0000000..18fb627
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr71670.c
@@ -0,0 +1,7 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+/* { dg-options "-mcpu=power9 -O1" } */
+
+volatile int a;
+int b;
+void fn1(void) { b + (long)b || a; }