* passes.c (rest_of_clean_state): Decompose the instruction stream.
authorJan Hubicka <jh@suse.cz>
Sat, 4 Sep 2004 09:05:53 +0000 (11:05 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 4 Sep 2004 09:05:53 +0000 (09:05 +0000)
From-SVN: r87080

gcc/ChangeLog
gcc/passes.c

index 19d3faef6818502e7eea5035cabd0e0fe1885674..856eff4cb9d3770010b2ddfa55caa94527744fe1 100644 (file)
@@ -1,3 +1,7 @@
+2004-09-04  Jan Hubicka  <jh@suse.cz>
+
+       * passes.c (rest_of_clean_state):  Decompose the instruction stream.
+
 2004-09-04  Richard Sandiford  <rsandifo@redhat.com>
 
        * doc/md.texi (shift patterns): New anchor.  Add reference to
index 7c6f002460429ab85506edbaea3c949f0764949d..a125c71b7017f762050b62edee3000ef001e130e 100644 (file)
@@ -1634,6 +1634,18 @@ static void
 rest_of_clean_state (void)
 {
   coverage_end_function ();
+  rtx insn, next;
+
+  /* It is very important to decompose the RTL instruction chain here:
+     debug information keeps pointing into CODE_LABEL insns inside the function
+     body.  If these remain pointing to the other insns, we end up preserving
+     whole RTL chain and attached detailed debug info in memory.  */
+  for (insn = get_insns (); insn; insn = next)
+    {
+      next = NEXT_INSN (insn);
+      NEXT_INSN (insn) = NULL;
+      PREV_INSN (insn) = NULL;
+    }
 
   /* In case the function was not output,
      don't leave any temporary anonymous types