aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm.c9
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 93257ee..24be811 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-08-15 Richard Earnshaw <richard.earnshaw@arm.com>
+
+ PR target/23355
+ * arm.c (thumb_compute_save_reg_mask): Use similar logic to
+ arm_compure_save_reg0_reg12_mask to determine when the PIC register
+ must be saved.
+
2005-08-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR middle-end/23369
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index d391a52..76f9091 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -8935,11 +8935,10 @@ thumb_compute_save_reg_mask (void)
if (regs_ever_live[reg] && !call_used_regs[reg])
mask |= 1 << reg;
- if (flag_pic && !TARGET_SINGLE_PIC_BASE)
- mask |= (1 << PIC_OFFSET_TABLE_REGNUM);
-
- if (TARGET_SINGLE_PIC_BASE)
- mask &= ~(1 << arm_pic_register);
+ if (flag_pic
+ && !TARGET_SINGLE_PIC_BASE
+ && current_function_uses_pic_offset_table)
+ mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
/* See if we might need r11 for calls to _interwork_r11_call_via_rN(). */
if (!frame_pointer_needed && CALLER_INTERWORKING_SLOT_SIZE > 0)