Commit cb038fd2 by Richard Sandiford Committed by Richard Sandiford

mips.c (mips_pic_call_symbol_from_set): Check for SYMBOL_REF SET_SRCs.

gcc/
	* config/mips/mips.c (mips_pic_call_symbol_from_set): Check for
	SYMBOL_REF SET_SRCs.

From-SVN: r190717
parent d8c51572
2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/mips.c (mips_pic_call_symbol_from_set): Check for
SYMBOL_REF SET_SRCs.
2012-08-27 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/mips.c (vr4130_align_insns): Don't simulate
ghost instructions. Assert that the required instructions exist.
......
......@@ -14706,13 +14706,13 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
{
rtx note, src, symbol;
/* First, look at REG_EQUAL/EQUIV notes. */
note = find_reg_equal_equiv_note (def_insn);
if (note && GET_CODE (XEXP (note, 0)) == SYMBOL_REF)
return XEXP (note, 0);
/* For %call16 references we don't have REG_EQUAL. */
/* First see whether the source is a plain symbol. This is used
when calling symbols that are not lazily bound. */
src = SET_SRC (set);
if (GET_CODE (src) == SYMBOL_REF)
return src;
/* Handle %call16 references. */
symbol = mips_strip_unspec_call (src);
if (symbol)
{
......@@ -14720,6 +14720,12 @@ mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
return symbol;
}
/* If we have something more complicated, look for a
REG_EQUAL or REG_EQUIV note. */
note = find_reg_equal_equiv_note (def_insn);
if (note && GET_CODE (XEXP (note, 0)) == SYMBOL_REF)
return XEXP (note, 0);
/* Follow at most one simple register copy. Such copies are
interesting in cases like:
......
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