diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-03 23:51:34 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-03 23:51:34 +0000 |
commit | b461b04a8238ee3e1661704045707c8926b7053b (patch) | |
tree | 842a1c8925dade5dfcab346e08da56ab9d3f40cf | |
parent | 89526ffcc821b49e718d500c772903d1c826059b (diff) | |
download | gcc-b461b04a8238ee3e1661704045707c8926b7053b.tar.gz |
[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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235851 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr70866.c | 11 |
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d9ae26a8093..79fb0f48598 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 61d39242b39..a88cb190683 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 b83de7369fd..6c1397d78c0 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 00000000000..25fd05a1deb --- /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); +} |