diff options
author | Joakim Tjernlund <Joakim.Tjernlund@transmode.se> | 2010-11-30 02:47:54 +0100 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2010-11-30 01:47:54 +0000 |
commit | 042abba2005f145b49ea828826a82c42e5e28061 (patch) | |
tree | 0f6e2628c28c6d24a344bf20d903b868340d9986 /gcc/config | |
parent | ddac6b7317082c690412f2f7828b6fc6a9bd58b5 (diff) | |
download | gcc-042abba2005f145b49ea828826a82c42e5e28061.zip gcc-042abba2005f145b49ea828826a82c42e5e28061.tar.gz gcc-042abba2005f145b49ea828826a82c42e5e28061.tar.bz2 |
rs6000.c (rs6000_reg_live_or_pic_offset_p): Check TARGET_SINGLE_PIC_BASE for RS6000_PIC_OFFSET_TABLE_REGNUM.
* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Check
TARGET_SINGLE_PIC_BASE for RS6000_PIC_OFFSET_TABLE_REGNUM.
(rs6000_emit_prologue): Don't set PIC register if
TARGET_SINGLE_PIC_BASE.
* config/rs6000/rs6000.opt (msingle-pic-base): New option.
* doc/invoke.texi (msingle-pic-base): Document.
From-SVN: r167283
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.opt | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 9ac9d99..6136c39 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -20032,8 +20032,10 @@ rs6000_reg_live_or_pic_offset_p (int reg) return (((crtl->calls_eh_return || df_regs_ever_live_p (reg)) && (!call_used_regs[reg] || (reg == RS6000_PIC_OFFSET_TABLE_REGNUM + && !TARGET_SINGLE_PIC_BASE && TARGET_TOC && TARGET_MINIMAL_TOC))) || (reg == RS6000_PIC_OFFSET_TABLE_REGNUM + && !TARGET_SINGLE_PIC_BASE && ((DEFAULT_ABI == ABI_V4 && flag_pic != 0) || (DEFAULT_ABI == ABI_DARWIN && flag_pic)))); } @@ -20688,6 +20690,9 @@ rs6000_emit_prologue (void) insn = emit_insn (generate_set_vrsave (reg, info, 0)); } + if (TARGET_SINGLE_PIC_BASE) + return; /* Do not set PIC register */ + /* If we are using RS6000_PIC_OFFSET_TABLE_REGNUM, we need to set it up. */ if ((TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0) || (DEFAULT_ABI == ABI_V4 diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 2c6a861..02a60f8 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -275,6 +275,10 @@ mupdate Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE) Generate load/store with update instructions +msingle-pic-base +Target Report Var(TARGET_SINGLE_PIC_BASE) Init(0) +Do not load the PIC register in function prologues + mavoid-indexed-addresses Target Report Var(TARGET_AVOID_XFORM) Init(-1) Save Avoid generation of indexed load/store instructions when possible |