flow.c (delete_block): Call set_last_insn after we have reset NEXT_INSN (kept_tail).
authorJeff Law <law@gcc.gnu.org>
Wed, 2 Dec 1998 09:14:57 +0000 (02:14 -0700)
committerJeff Law <law@gcc.gnu.org>
Wed, 2 Dec 1998 09:14:57 +0000 (02:14 -0700)
8
        * flow.c (delete_block): Call set_last_insn after we have reset
        NEXT_INSN (kept_tail).

From-SVN: r24059

gcc/flow.c

index 825bf22294b8248bdf4f0f3595939d9de0d9d173..cc76a9ccb2b519527206d290692c087da2b9ba92 100644 (file)
@@ -1026,11 +1026,15 @@ delete_block (i)
       NEXT_INSN (PREV_INSN (basic_block_head[i])) = kept_head;
       if (insn != 0)
        PREV_INSN (insn) = kept_tail;
-      else
-       set_last_insn (kept_tail);
 
       PREV_INSN (kept_head) = PREV_INSN (basic_block_head[i]);
       NEXT_INSN (kept_tail) = insn;
+
+      /* This must happen after NEXT_INSN (kept_tail) has been reinitialized
+        since set_last_insn will abort if it detects a non-NULL NEXT_INSN
+        field in its argument.  */
+      if (insn == NULL_RTX)
+       set_last_insn (kept_tail);
     }
 
   /* Each time we delete some basic blocks,