mips.c (mips_save_reg_p): Don't short-circuit rest of function when handling GLOBAL_P...
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 17 Aug 2008 10:47:40 +0000 (10:47 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 17 Aug 2008 10:47:40 +0000 (10:47 +0000)
gcc/
* config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
of function when handling GLOBAL_POINTER_REGNUM.

From-SVN: r139169

gcc/ChangeLog
gcc/config/mips/mips.c

index faa9226..9b3fc6e 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
+       of function when handling GLOBAL_POINTER_REGNUM.
+
 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR ada/20548
index 48daec4..51af59b 100644 (file)
@@ -8322,10 +8322,12 @@ mips_global_pointer (void)
 static bool
 mips_save_reg_p (unsigned int regno)
 {
-  /* We only need to save $gp if TARGET_CALL_SAVED_GP and only then
-     if we have not chosen a call-clobbered substitute.  */
-  if (regno == GLOBAL_POINTER_REGNUM)
-    return TARGET_CALL_SAVED_GP && cfun->machine->global_pointer == regno;
+  /* We need to save $gp if TARGET_CALL_SAVED_GP and if we have not
+     chosen a call-clobbered substitute.  */
+  if (TARGET_CALL_SAVED_GP
+      && regno == GLOBAL_POINTER_REGNUM
+      && cfun->machine->global_pointer == regno)
+    return true;
 
   /* Check call-saved registers.  */
   if ((crtl->saves_all_registers || df_regs_ever_live_p (regno))