From 39c39be09e9537d1d642cc49a48d2a2d76a7d960 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Tue, 16 Aug 2005 09:27:52 +0000 Subject: [PATCH] re PR target/23355 (size optimizer did not eliminateing useless Push and pop instructions at ARM/Thumb machine) 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. From-SVN: r103151 --- gcc/ChangeLog | 7 +++++++ gcc/config/arm/arm.c | 9 ++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93257ee7752..24be81187b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-08-15 Richard Earnshaw + + 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 PR middle-end/23369 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index d391a5242ae..76f9091150e 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) -- 2.30.2