LOADGP_ABSOLUTE and not binds_local_p.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125276
138bc75d-0d04-0410-961f-
82ee72b054a4
+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.
= 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);