[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
This commit is contained in:
Alan Modra 2016-05-04 09:21:34 +09:30 committed by Alan Modra
parent 9ced954948
commit 475839b6db
4 changed files with 24 additions and 3 deletions

View file

@ -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> 2016-05-04 Bernd Schmidt <bschmidt@redhat.com>
PR rtl-optimization/57193 PR rtl-optimization/57193

View file

@ -23689,9 +23689,9 @@ rs6000_stack_info (void)
info->calls_p = (!crtl->is_leaf || cfun->machine->ra_needs_full_frame); info->calls_p = (!crtl->is_leaf || cfun->machine->ra_needs_full_frame);
/* Determine if we need to save the condition code registers. */ /* Determine if we need to save the condition code registers. */
if (df_regs_ever_live_p (CR2_REGNO) if (save_reg_p (CR2_REGNO)
|| df_regs_ever_live_p (CR3_REGNO) || save_reg_p (CR3_REGNO)
|| df_regs_ever_live_p (CR4_REGNO)) || save_reg_p (CR4_REGNO))
{ {
info->cr_save_p = 1; info->cr_save_p = 1;
if (DEFAULT_ABI == ABI_V4) if (DEFAULT_ABI == ABI_V4)

View file

@ -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> 2016-05-03 Martin Sebor <msebor@redhat.com>
PR c++/66561 PR c++/66561

View file

@ -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);
}