This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: can't run combine after flow.
- To: Geoffrey Keating <geoffk at cygnus dot com>
- Subject: Re: can't run combine after flow.
- From: grahams <grahams at rcp dot co dot uk>
- Date: Sun, 27 Feb 2000 12:17:27 +0000
- CC: gcc-bugs at gcc dot gnu dot org
- References: <200002262136.NAA12224@toto.cygnus.com>
Geoff
I also ran into problems (on x86) with rebuild_jump_labels() sometimes
breaking the CFG.
The problem is jump_optimize isn't CFG aware, for instance I have
seen the following problems.
a) delete_insn() deleted a block head
b) delete_insn() deleted a block end
c) do_cross_jump() added a code label into the middle of a block
I couldn't see an easy way to always preserve the CFG during
rebuild_jump_labels() so I took a speed hit and rebuild the CFG
after running rebuild_jump_labels() by calling find_basic_blocks(),
cleanup_cfg (), calculate_loop_depth () and life_analysis ().
Rebuilding the CFG isn't always necessary because rebuild_jump_labels()
doesn't always break it, so rebuilding the CFG could be made conditional
on the CFG being broken.
Rebuilding the CFG after rebuild_jump_labels() gets x86 back to bootstrap.
Any comments?
Graham