summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-11 01:24:07 +0000
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-11 01:24:07 +0000
commit37d5afa333985325a182aa2e17dcd5c5057af8b1 (patch)
treedaa8fbb1727f005f09d672a6924f743eb955a29f /gcc/config
parent459191f5a843c694342495ccb8e5a3e37fd7580a (diff)
downloadgcc-37d5afa333985325a182aa2e17dcd5c5057af8b1.tar.gz
* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Save PIC
register if current_function_uses_pic_offset_table is set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90465 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/arm/arm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 914babe02e0..24474e98b14 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -8630,6 +8630,12 @@ arm_compute_save_reg0_reg12_mask (void)
if (regs_ever_live[reg]
|| (! current_function_is_leaf && call_used_regs [reg]))
save_reg_mask |= (1 << reg);
+
+ /* Also save the pic base register if neccessary. */
+ if (flag_pic
+ && !TARGET_SINGLE_PIC_BASE
+ && current_function_uses_pic_offset_table)
+ save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
}
else
{
@@ -8649,8 +8655,9 @@ arm_compute_save_reg0_reg12_mask (void)
/* If we aren't loading the PIC register,
don't stack it even though it may be live. */
if (flag_pic
- && ! TARGET_SINGLE_PIC_BASE
- && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
+ && !TARGET_SINGLE_PIC_BASE
+ && (regs_ever_live[PIC_OFFSET_TABLE_REGNUM]
+ || current_function_uses_pic_offset_table))
save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
}