aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Daney <ddaney@avtrex.com>2007-06-02 04:27:40 +0000
committerDavid Daney <daney@gcc.gnu.org>2007-06-02 04:27:40 +0000
commitadb04511e38c5ce6929a7e539c6d014464b5aa03 (patch)
tree1f5af0bdd412240edf4f951e9256a810d731b589
parent45d5f86c4138fda531097de5bf658c396038c9bc (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c8
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);