diff options
author | Jan Hubicka <jh@suse.cz> | 2004-09-04 11:05:53 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2004-09-04 09:05:53 +0000 |
commit | 0a9aeefd620bb680d58187a52532c8c027ee991d (patch) | |
tree | 26ace95fc23681b5f767a4b940fe57f0826387c6 /gcc/passes.c | |
parent | 273a2526bdccb1cde0f332d254616982cc142a64 (diff) | |
download | gcc-0a9aeefd620bb680d58187a52532c8c027ee991d.zip gcc-0a9aeefd620bb680d58187a52532c8c027ee991d.tar.gz gcc-0a9aeefd620bb680d58187a52532c8c027ee991d.tar.bz2 |
* passes.c (rest_of_clean_state): Decompose the instruction stream.
From-SVN: r87080
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index 7c6f002..a125c71 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 |