aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Daney <ddaney@avtrex.com>2007-06-18 17:36:42 +0000
committerDavid Daney <daney@gcc.gnu.org>2007-06-18 17:36:42 +0000
commitd4977f6ca69175185798177faa70d72df4e45d91 (patch)
tree636f754cf45e67dc6491ad1b52654c679e4694db /gcc
parent046d30f4e00a67db11604081259956883bc0ec1e (diff)
downloadgcc-d4977f6ca69175185798177faa70d72df4e45d91.zip
gcc-d4977f6ca69175185798177faa70d72df4e45d91.tar.gz
gcc-d4977f6ca69175185798177faa70d72df4e45d91.tar.bz2
re PR target/32313 (Bootstrap failure running gengtype in stage 2.)
PR target/32313 * config/mips/mips.c (mips_expand_call): Mark $gp as used by local function call. From-SVN: r125818
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mips/mips.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 00b1ec9..915643a1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index a132f0f..287c531 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -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);
}