From: Richard Sandiford Date: Mon, 27 Aug 2012 16:25:47 +0000 (+0000) Subject: mips.c (mips_pic_call_symbol_from_set): Check for SYMBOL_REF SET_SRCs. X-Git-Tag: upstream/12.2.0~74561 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb038fd20d3d744471b887658786e7a765fb3e1b;p=platform%2Fupstream%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 82c7a35..ac45772 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2012-08-27 Richard Sandiford + * config/mips/mips.c (mips_pic_call_symbol_from_set): Check for + SYMBOL_REF SET_SRCs. + +2012-08-27 Richard Sandiford + * config/mips/mips.c (vr4130_align_insns): Don't simulate ghost instructions. Assert that the required instructions exist. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index b20e4ed..7721a7c 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -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: