diff options
author | Pat Haugen <pthaugen@us.ibm.com> | 2017-09-14 18:29:44 +0000 |
---|---|---|
committer | Pat Haugen <pthaugen@gcc.gnu.org> | 2017-09-14 18:29:44 +0000 |
commit | 44e13e607f63ef73c75cd64b041f24b0eeafd992 (patch) | |
tree | 19b2d65af1c02d3ff136cf98414c82940da1f8b1 /gcc/config | |
parent | bc998d034f45d1828a8663b2eed928faf22a7d01 (diff) | |
download | gcc-44e13e607f63ef73c75cd64b041f24b0eeafd992.zip gcc-44e13e607f63ef73c75cd64b041f24b0eeafd992.tar.gz gcc-44e13e607f63ef73c75cd64b041f24b0eeafd992.tar.bz2 |
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
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 3fee228..6dd726e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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); } |