re PR target/23355 (size optimizer did not eliminateing useless Push and pop instruct...
authorRichard Earnshaw <rearnsha@arm.com>
Tue, 16 Aug 2005 09:27:52 +0000 (09:27 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Tue, 16 Aug 2005 09:27:52 +0000 (09:27 +0000)
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
gcc/config/arm/arm.c

index 93257ee77521efac2fb40bb4b8d076c16d87afe2..24be81187b794389d4e38b77e147197e99914406 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 d391a5242aea3bb1742cb7dd223f8dcaa175e7f8..76f9091150eedb9f888dbaff98338b946b10dbbb 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)