diff options
author | David Daney <ddaney@avtrex.com> | 2007-06-02 04:27:40 +0000 |
---|---|---|
committer | David Daney <daney@gcc.gnu.org> | 2007-06-02 04:27:40 +0000 |
commit | adb04511e38c5ce6929a7e539c6d014464b5aa03 (patch) | |
tree | 1f5af0bdd412240edf4f951e9256a810d731b589 | |
parent | 45d5f86c4138fda531097de5bf658c396038c9bc (diff) | |
download | gcc-adb04511e38c5ce6929a7e539c6d014464b5aa03.zip gcc-adb04511e38c5ce6929a7e539c6d014464b5aa03.tar.gz gcc-adb04511e38c5ce6929a7e539c6d014464b5aa03.tar.bz2 |
mips.c (mips_output_mi_thunk): Only load gp if not LOADGP_ABSOLUTE and not binds_local_p.
* config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
LOADGP_ABSOLUTE and not binds_local_p.
From-SVN: r125276
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ba77c99..904fe7d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-06-01 David Daney <ddaney@avtrex.com> + + * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not + LOADGP_ABSOLUTE and not binds_local_p. + 2007-06-01 Geoffrey Keating <geoffk@apple.com> * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index ddab40c..0e860b6 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -7335,8 +7335,12 @@ mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, = REGNO (pic_offset_table_rtx) = TARGET_CALL_SAVED_GP ? 15 : GLOBAL_POINTER_REGNUM; - /* Set up the global pointer for n32 or n64 abicalls. */ - mips_emit_loadgp (); + /* Set up the global pointer for n32 or n64 abicalls. If + LOADGP_ABSOLUTE then the thunk does not use the gp and there is + no need to load it.*/ + if (mips_current_loadgp_style () != LOADGP_ABSOLUTE + || !targetm.binds_local_p (function)) + mips_emit_loadgp (); /* We need two temporary registers in some cases. */ temp1 = gen_rtx_REG (Pmode, 2); |