This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: can't run combine after flow.


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]