re PR target/15550 ([i386] ICE in extract_insn, at recog.c:2083)
authorRichard Henderson <rth@redhat.com>
Sat, 19 Jun 2004 19:13:03 +0000 (12:13 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 19 Jun 2004 19:13:03 +0000 (12:13 -0700)
        PR target/15550
        * ifcvt.c (noce_try_move): Recognize all generated instructions.

From-SVN: r83395

gcc/ChangeLog
gcc/ifcvt.c

index 22d6a04a344d05241c691998f0da529269e294c2..07e75cd2b5e3af6d8c8a650524654f73416ea1bf 100644 (file)
@@ -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*.
index 270cc59b2047ca8a4db5d0b42298da06aa8b8305..79774adc90a14267bf95642dad4e43eda5b83e8d 100644 (file)
@@ -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));
        }