diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 9 |
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) |