aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-06-19 12:13:03 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-06-19 12:13:03 -0700
commit8426c25e7c2351b1f1f7a48d3ec01a79622f558c (patch)
tree6d8e477733d842d809fa739ad92b73bc6b495e09 /gcc
parenteb4e1c013c5b2f53ec8a31c98fbcd752d089ff4b (diff)
downloadgcc-8426c25e7c2351b1f1f7a48d3ec01a79622f558c.zip
gcc-8426c25e7c2351b1f1f7a48d3ec01a79622f558c.tar.gz
gcc-8426c25e7c2351b1f1f7a48d3ec01a79622f558c.tar.bz2
re PR target/15550 ([i386] ICE in extract_insn, at recog.c:2083)
PR target/15550 * ifcvt.c (noce_try_move): Recognize all generated instructions. From-SVN: r83395
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ifcvt.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 22d6a04..07e75cd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-06-19 Richard Henderson <rth@redhat.com>
+
+ PR target/15550
+ * ifcvt.c (noce_try_move): Recognize all generated instructions.
+
2004-06-19 Jan Hubicka <jh@suse.cz>
* function.c (free_after_compilation): Do not free computed_goto_common*.
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 270cc59..79774ad 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -745,6 +745,15 @@ noce_try_move (struct noce_if_info *if_info)
seq = get_insns ();
unshare_ifcvt_sequence (if_info, seq);
end_sequence ();
+
+ /* Make sure that all of the instructions emitted are
+ recognizable. As an excersise for the reader, build
+ a general mechanism that allows proper placement of
+ required clobbers. */
+ for (y = seq; y ; y = NEXT_INSN (y))
+ if (recog_memoized (y) == -1)
+ return FALSE;
+
emit_insn_before_setloc (seq, if_info->jump,
INSN_LOCATOR (if_info->insn_a));
}