Commit 9be10a79 by Richard Sandiford Committed by Richard Sandiford

mips.c (mips_function_ok_for_sibcall): Only forbid sibling calls to "mips16" functions if...

gcc/
	* config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
	sibling calls to "mips16" functions if the function satisfies
	const_call_insn_operand.

From-SVN: r129526
parent e0681eaa
2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
* config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
sibling calls to "mips16" functions if the function satisfies
const_call_insn_operand.
2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
* config/mips/mips.c (mips_va_start): Fix types in calls
to build_int_cst.
......@@ -5648,14 +5648,15 @@ mips_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
/* We can't do a sibcall if the called function is a MIPS16 function
because there is no direct "jx" instruction equivalent to "jalx" to
switch the ISA mode. */
if (mips_use_mips16_mode_p (decl))
switch the ISA mode. We only care about cases where the sibling
and normal calls would both be direct. */
if (mips_use_mips16_mode_p (decl)
&& const_call_insn_operand (XEXP (DECL_RTL (decl), 0), VOIDmode))
return false;
/* ...and when -minterlink-mips16 is in effect, assume that external
/* When -minterlink-mips16 is in effect, assume that external
functions could be MIPS16 ones unless an attribute explicitly
tells us otherwise. We only care about cases where the sibling
and normal calls would both be direct. */
tells us otherwise. */
if (TARGET_INTERLINK_MIPS16
&& decl
&& DECL_EXTERNAL (decl)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment