diff options
author | David Daney <ddaney@avtrex.com> | 2007-06-18 17:36:42 +0000 |
---|---|---|
committer | David Daney <daney@gcc.gnu.org> | 2007-06-18 17:36:42 +0000 |
commit | d4977f6ca69175185798177faa70d72df4e45d91 (patch) | |
tree | 636f754cf45e67dc6491ad1b52654c679e4694db | |
parent | 046d30f4e00a67db11604081259956883bc0ec1e (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 9 |
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); } |