From 4817c43b1740e11de6ad2e6074cf2a9c4c1d431c Mon Sep 17 00:00:00 2001
From: Richard Sandiford <rdsandiford@googlemail.com>
Date: Sun, 17 Aug 2008 10:47:40 +0000
Subject: [PATCH] mips.c (mips_save_reg_p): Don't short-circuit rest of
 function when handling GLOBAL_POINTER_REGNUM.

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          |  5 +++++
 gcc/config/mips/mips.c | 10 ++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index faa92264ee7c..9b3fc6ef69ad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 48daec4175d2..51af59b2f1c3 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -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))
-- 
GitLab