aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-09-24 01:14:54 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-24 01:14:54 +0000
commita571f7a00e33edb193e1a74869dab3f0576eb87c (patch)
tree393df4ea10315f15ce843bb2005c46512faa3f69
parent541b0512b1977c888dc08b99076cee97997c950d (diff)
downloadgcc-a571f7a00e33edb193e1a74869dab3f0576eb87c.zip
gcc-a571f7a00e33edb193e1a74869dab3f0576eb87c.tar.gz
gcc-a571f7a00e33edb193e1a74869dab3f0576eb87c.tar.bz2
stmt.c (expand_start_bindings): Don't allow cleanup isntructions to disappear.
* stmt.c (expand_start_bindings): Don't allow cleanup isntructions to disappear. From-SVN: r29644
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/stmt.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f2002c1..c10d22a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Sep 23 18:18:55 1999 Mark Mitchell <mark@codesourcery.com>
+
+ * stmt.c (expand_start_bindings): Don't allow cleanup isntructions
+ to disappear.
+
Thu Sep 23 18:07:01 1999 Mark Mitchell <mark@codesourcery.com>
* optabs.c (init_traps): Register trap_rtx as a GC root.
diff --git a/gcc/stmt.c b/gcc/stmt.c
index f2180bf..265f365 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -3230,6 +3230,13 @@ expand_start_bindings (flags)
thisblock->data.block.conditional_code = 0;
thisblock->data.block.last_unconditional_cleanup = note;
+ /* When we insert instructions after the last unconditional cleanup,
+ we don't adjust last_insn. That means that a later add_insn will
+ clobber the instructions we've just added. The easiest way to
+ fix this is to just insert another instruction here, so that the
+ instructions inserted after the last unconditional cleanup are
+ never the last instruction. */
+ emit_note (NULL_PTR, NOTE_INSN_DELETED);
thisblock->data.block.cleanup_ptr = &thisblock->data.block.cleanups;
if (block_stack