]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/32313 (Bootstrap failure running gengtype in stage 2.)
authorDavid Daney <ddaney@avtrex.com>
Mon, 18 Jun 2007 17:36:42 +0000 (17:36 +0000)
committerDavid Daney <daney@gcc.gnu.org>
Mon, 18 Jun 2007 17:36:42 +0000 (17:36 +0000)
PR target/32313
* config/mips/mips.c (mips_expand_call): Mark $gp as used by
local function call.

From-SVN: r125818

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

index 00b1ec914520c990b4acb2d1b13584f081c7e69d..915643a11ace33b3f6e3ce0c7f622ff159273900 100644 (file)
@@ -1,3 +1,9 @@
+2007-06-18  David Daney  <ddaney@avtrex.com
+
+       PR target/32313
+       * config/mips/mips.c (mips_expand_call): Mark $gp as used by
+       local function call.
+
 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
 
        PR middle-end/32355
index a132f0ff4c9e7cb974d6e22fd093cf99fb93b17c..287c5313cf242d2b1c9547f2328ec4958dfb909b 100644 (file)
@@ -3562,8 +3562,13 @@ mips_expand_call (rtx result, rtx addr, rtx args_size, rtx aux, int sibcall_p)
 
   insn = emit_call_insn (pattern);
 
-  /* Lazy-binding stubs require $gp to be valid on entry.  */
-  if (mips_ok_for_lazy_binding_p (orig_addr))
+  /* Lazy-binding stubs require $gp to be valid on entry.  So does the
+     case of calling a local function with TARGET_ABICALLS and
+     -mno-shared (a.k.a. TARGET_ABSOLUTE_ABICALLS). */
+  if (mips_ok_for_lazy_binding_p (orig_addr)
+      || (TARGET_ABSOLUTE_ABICALLS
+          && (GET_CODE (orig_addr) == SYMBOL_REF)
+          && targetm.binds_local_p (SYMBOL_REF_DECL (orig_addr))))
     use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx);
 }