OSDN Git Service

PR target/23355
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Aug 2005 09:27:52 +0000 (09:27 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Aug 2005 09:27:52 +0000 (09:27 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103151 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c

index 93257ee..24be811 100644 (file)
@@ -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
index d391a52..76f9091 100644 (file)
@@ -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)