stmt.c (expand_fixup): Set fixup->before_jump to a NOTE_INSN_DELETED instead of a...
authorJason Merrill <jason@yorick.cygnus.com>
Sun, 25 Oct 1998 23:56:23 +0000 (16:56 -0700)
committerJeff Law <law@gcc.gnu.org>
Sun, 25 Oct 1998 23:56:23 +0000 (16:56 -0700)
8
* stmt.c (expand_fixup): Set fixup->before_jump to a
NOTE_INSN_DELETED instead of a NOTE_INSN_BLOCK_BEG.

From-SVN: r23330

gcc/stmt.c

index f821d77da0f248d636f5601068abd7f1e4c2dc10..46a5bcbf1f2281411857e09c885bc30873f0287a 100644 (file)
@@ -886,19 +886,25 @@ expand_fixup (tree_label, rtl_label, last_insn)
         code which we might later insert at this point in the insn
         stream.  Also, the BLOCK node will be the parent (i.e. the
         `SUPERBLOCK') of any other BLOCK nodes which we might create
-        later on when we are expanding the fixup code.  */
+        later on when we are expanding the fixup code.
+
+        Note that optimization passes (including expand_end_loop)
+        might move the *_BLOCK notes away, so we use a NOTE_INSN_DELETED
+        as a placeholder.  */
 
       {
         register rtx original_before_jump
           = last_insn ? last_insn : get_last_insn ();
+       rtx start;
 
         start_sequence ();
         pushlevel (0);
-        fixup->before_jump = emit_note (NULL_PTR, NOTE_INSN_BLOCK_BEG);
+        start = emit_note (NULL_PTR, NOTE_INSN_BLOCK_BEG);
+       fixup->before_jump = emit_note (NULL_PTR, NOTE_INSN_DELETED);
         last_block_end_note = emit_note (NULL_PTR, NOTE_INSN_BLOCK_END);
         fixup->context = poplevel (1, 0, 0);  /* Create the BLOCK node now! */
         end_sequence ();
-        emit_insns_after (fixup->before_jump, original_before_jump);
+        emit_insns_after (start, original_before_jump);
       }
 
       fixup->block_start_count = block_start_count;