This is the mail archive of the
mailing list for the GCC project.
Re: Remove RTL EH cleanup code
> On Sun, Apr 5, 2009 at 9:28 PM, Jan Hubicka <email@example.com> wrote:
> >> Hi,
> >> this patch removes RTL EH cleanup code. ?This saves one cfg cleanup call and
> >> one walk of insn chain + one remove_unreachable_regions call. ?Instead of that
> >> I scheduled one gimple cleanup_eh pass just before end of optimization queue.
> >> This does remove_unreachable_regions + one walk of gimple insn chain, so should
> >> be about same cost or cheaper.
> >> It is done post out-of-ssa pass. ?In my experience before out-of-ssa we tend to
> >> have empty basic block hold together because of PHI nodes. ?This is cleaned up
> >> afterwards and helps some extra EH tree simplifications I implemented. ?But in
> >> general with some merge_phi improvements, one extra merge_phi pass after
> >> critical edge splitting and moving pass before out-of-ssa we get pretty much
> >> same results.
> > some merge_phi improvements reffer to code on pretty-ipa that just marks
> > unmergeable phi nodes on virtuals for renaming and merge blocks anyway.
> > This makes quite few empty BBs disappear.
> I hope we will not have post out-of-ssa gimple state in 4.5, so the
> post out-of-ssa
> solution is not a good start.
OK, I can simply re-test the patch with pass scheduled before
out-of-ssa. (I use it that way on pretty-ipa, so I know it works).
Reason why I moved it past out-of-ssa on mainline is the fact that I
will soon want to add code that merge EH regions that turns out to have
same labels. For this I need no unnecesary forwarder blocks and
scheduling pass later reduces dependencies in between patches I want to
On pretty-ipa I get rid of those forwarders via merge_phi improvement +
extra merge_phi pass, but on mainline we don't have these. If this
looks like plan to you, lets just move the pass?