(distribute_notes): When output an insn to hold a REG_DEAD note,
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 16 Dec 1994 11:44:16 +0000 (06:44 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 16 Dec 1994 11:44:16 +0000 (06:44 -0500)
update basic_block_head if necessary.

From-SVN: r8658

gcc/combine.c

index f7415aea817237269ec466a63e0dcdc142169acc..fb82ea8120466968f3a276cf4c052fbe63458d61 100644 (file)
@@ -10576,9 +10576,16 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
                 put the death node there.  This prevents problems with
                 call-state tracking in caller-save.c.  */
              if (REG_NOTE_KIND (note) == REG_DEAD && place == 0 && tem != 0)
-               place
-                 = emit_insn_after (gen_rtx (USE, VOIDmode, XEXP (note, 0)),
-                                    tem);
+               {
+                 place
+                   = emit_insn_after (gen_rtx (USE, VOIDmode, XEXP (note, 0)),
+                                      tem);
+
+                 /* If this insn was emitted between blocks, then update
+                    basic_block_head of the current block to include it.  */
+                 if (basic_block_end[this_basic_block - 1] == tem)
+                   basic_block_head[this_basic_block] = place;
+               }
            }
 
          /* If the register is set or already dead at PLACE, we needn't do