From 0a9aeefd620bb680d58187a52532c8c027ee991d Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 4 Sep 2004 11:05:53 +0200 Subject: [PATCH] * passes.c (rest_of_clean_state): Decompose the instruction stream. From-SVN: r87080 --- gcc/ChangeLog | 4 ++++ gcc/passes.c | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19d3faef681..856eff4cb9d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-09-04 Jan Hubicka + + * passes.c (rest_of_clean_state): Decompose the instruction stream. + 2004-09-04 Richard Sandiford * doc/md.texi (shift patterns): New anchor. Add reference to diff --git a/gcc/passes.c b/gcc/passes.c index 7c6f0024604..a125c71b701 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -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 -- 2.30.2