rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the set of registers defined in the prologue.
* config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the set of registers defined in the prologue. * gcc.target/powerpc/r2_shrink-wrap.c: New. From-SVN: r252768
This commit is contained in:
parent
bc998d034f
commit
44e13e607f
4 changed files with 31 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-09-14 Pat Haugen <pthaugen@us.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
|
||||
reg (r2) isn't in the set of registers defined in the prologue.
|
||||
|
||||
2017-09-14 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
|
|
@ -37804,6 +37804,11 @@ rs6000_set_up_by_prologue (struct hard_reg_set_container *set)
|
|||
add_to_hard_reg_set (&set->set, Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM);
|
||||
if (cfun->machine->split_stack_argp_used)
|
||||
add_to_hard_reg_set (&set->set, Pmode, 12);
|
||||
|
||||
/* Make sure the hard reg set doesn't include r2, which was possibly added
|
||||
via PIC_OFFSET_TABLE_REGNUM. */
|
||||
if (TARGET_TOC)
|
||||
remove_from_hard_reg_set (&set->set, Pmode, TOC_REGNUM);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2017-09-14 Pat Haugen <pthaugen@us.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/r2_shrink-wrap.c: New.
|
||||
|
||||
2017-09-14 Will Schmidt <will_schmidt@vnet.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/fold-vec-ld-longlong.c: Add
|
||||
|
|
17
gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
Normal file
17
gcc/testsuite/gcc.target/powerpc/r2_shrink-wrap.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile { target lp64 } } */
|
||||
/* { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } */
|
||||
|
||||
/* Verify we move the prologue past the TOC reference of 'j' and shrink-wrap
|
||||
the function. */
|
||||
void bar();
|
||||
int j;
|
||||
void foo(int i)
|
||||
{
|
||||
j = i;
|
||||
if (i > 0)
|
||||
{
|
||||
bar();
|
||||
}
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Performing shrink-wrapping" 1 "pro_and_epilogue" } } */
|
Loading…
Add table
Reference in a new issue