aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2016-05-04 09:21:34 +0930
committerAlan Modra <amodra@gcc.gnu.org>2016-05-04 09:21:34 +0930
commit475839b6db90ccdb27c0cc56400185cd04e783c3 (patch)
tree842a1c8925dade5dfcab346e08da56ab9d3f40cf /gcc
parent9ced9549482c0c22540f384a263191559e2157ff (diff)
downloadgcc-475839b6db90ccdb27c0cc56400185cd04e783c3.zip
gcc-475839b6db90ccdb27c0cc56400185cd04e783c3.tar.gz
gcc-475839b6db90ccdb27c0cc56400185cd04e783c3.tar.bz2
[RS6000] powerpc64le -ffixed-cr2 -ffixed-cr3 -ffixed-cr4 ICE
gcc/ PR target/70866 * config/rs6000/rs6000.c (rs6000_stack_info): Don't set cr_save_p when cr2,3,4 are all fixed regs. gcc/testsuite/ * gcc.target/powerpc/pr70866.c: New. From-SVN: r235851
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr70866.c11
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9ae26a..79fb0f48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-04 Alan Modra <amodra@gmail.com>
+
+ PR target/70866
+ * config/rs6000/rs6000.c (rs6000_stack_info): Don't set cr_save_p
+ when cr2,3,4 are all fixed regs.
+
2016-05-04 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/57193
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 61d3924..a88cb19 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -23689,9 +23689,9 @@ rs6000_stack_info (void)
info->calls_p = (!crtl->is_leaf || cfun->machine->ra_needs_full_frame);
/* Determine if we need to save the condition code registers. */
- if (df_regs_ever_live_p (CR2_REGNO)
- || df_regs_ever_live_p (CR3_REGNO)
- || df_regs_ever_live_p (CR4_REGNO))
+ if (save_reg_p (CR2_REGNO)
+ || save_reg_p (CR3_REGNO)
+ || save_reg_p (CR4_REGNO))
{
info->cr_save_p = 1;
if (DEFAULT_ABI == ABI_V4)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b83de73..6c1397d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2016-05-04 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/pr70866.c: New.
+
2016-05-03 Martin Sebor <msebor@redhat.com>
PR c++/66561
diff --git a/gcc/testsuite/gcc.target/powerpc/pr70866.c b/gcc/testsuite/gcc.target/powerpc/pr70866.c
new file mode 100644
index 0000000..25fd05a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr70866.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-ffixed-cr2 -ffixed-cr3 -ffixed-cr4" } */
+
+#define SET_CR(R,V) __asm__ __volatile__ ("mtcrf %0,%1" : : "n" (1<<(7-R)), "r" (V<<(4*(7-R))) : "cr" #R)
+
+void foo (void)
+{
+ SET_CR (2, 7);
+ SET_CR (3, 8);
+ SET_CR (4, 9);
+}