arm.c (arm_compute_save_reg0_reg12_mask): Save PIC register if current_function_uses_...
authorPaul Brook <pbrook@gcc.gnu.org>
Thu, 11 Nov 2004 01:24:07 +0000 (01:24 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Thu, 11 Nov 2004 01:24:07 +0000 (01:24 +0000)
* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Save PIC
register if current_function_uses_pic_offset_table is set.

From-SVN: r90465

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

index a3f0026371e0f0641ce66630ca7066ddf5de1b01..1c32849215f3197b660d7f44c0acd87ab91b6d89 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-11  Paul Brook  <paul@codesourcery.com>
+
+       * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Save PIC
+       register if current_function_uses_pic_offset_table is set.
+
 2004-11-10  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/rs6000.md (define_attr "type"): Add two and three.
@@ -47,7 +52,7 @@
 2004-11-10  Fariborz Jahanian <fjahanian@apple.com>
 
        PR tree-optimization/17892
-       * tree-ssa-dom.c (unsafe_associative_fp_binop): Add test for
+       * tree-ssa-dom.c (unsafe_associative_fp_binop): Add test for
        MINUS_EXPR operator.
 
 2004-11-10  James A. Morrison  <phython@gcc.gnu.org>
index 914babe02e058fe5b1cb8569870995f62ff9ec30..24474e98b1498fbaec2b2af15383a4231b672bc3 100644 (file)
@@ -8630,6 +8630,12 @@ arm_compute_save_reg0_reg12_mask (void)
        if (regs_ever_live[reg]
            || (! current_function_is_leaf && call_used_regs [reg]))
          save_reg_mask |= (1 << reg);
+
+      /* Also save the pic base register if neccessary.  */
+      if (flag_pic
+         && !TARGET_SINGLE_PIC_BASE
+         && current_function_uses_pic_offset_table)
+       save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
     }
   else
     {
@@ -8649,8 +8655,9 @@ arm_compute_save_reg0_reg12_mask (void)
       /* If we aren't loading the PIC register,
         don't stack it even though it may be live.  */
       if (flag_pic
-         && ! TARGET_SINGLE_PIC_BASE
-         && regs_ever_live[PIC_OFFSET_TABLE_REGNUM])
+         && !TARGET_SINGLE_PIC_BASE 
+         && (regs_ever_live[PIC_OFFSET_TABLE_REGNUM]
+             || current_function_uses_pic_offset_table))
        save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
     }