aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2007-02-20 22:11:52 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2007-02-20 22:11:52 +0000
commitea8f106d4c4e16933ef9bbd8bbd5a8588cd6c53f (patch)
treecbbca2e4e5c53d02da8c53c3ab7269794ce135b2 /gcc/rtlanal.c
parentb241831b6d7dfd5107299ad17f8b5c8d5e8967c7 (diff)
downloadgcc-ea8f106d4c4e16933ef9bbd8bbd5a8588cd6c53f.zip
gcc-ea8f106d4c4e16933ef9bbd8bbd5a8588cd6c53f.tar.gz
gcc-ea8f106d4c4e16933ef9bbd8bbd5a8588cd6c53f.tar.bz2
rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ* notes on an insn with multiple sets...
* rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ* notes on an insn with multiple sets, even if single_set returns non-NULL for that insn. From-SVN: r122177
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 2d15663..b23eec4 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1676,11 +1676,18 @@ find_reg_equal_equiv_note (rtx insn)
if (!INSN_P (insn))
return 0;
+
for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
if (REG_NOTE_KIND (link) == REG_EQUAL
|| REG_NOTE_KIND (link) == REG_EQUIV)
{
- if (single_set (insn) == 0)
+ /* FIXME: We should never have REG_EQUAL/REG_EQUIV notes on
+ insns that have multiple sets. Checking single_set to
+ make sure of this is not the proper check, as explained
+ in the comment in set_unique_reg_note.
+
+ This should be changed into an assert. */
+ if (GET_CODE (PATTERN (insn)) == PARALLEL && multiple_sets (insn))
return 0;
return link;
}