pretty-ipa merge 17: CD-DCE wrt cyclic CFGs fix

Jan Hubicka hubicka@ucw.cz
Mon Apr 27 10:55:00 GMT 2009


> 
> I'm at the point now where I believe DCE and CD-DCE are getting so
> complicated, that I would remove the CD-DCE bits completely again.
> When I added then, the benefit was minimal but real.  By now, I wonder
> if there still is any benefit at all.  I would measure that first and
> if it doesn't do anything, remove it.

Well, the issues I run into was real dead loops appearing during GCC
bootstrap in MPFR library.  These was quite difficult to remove ones
because they was built using iterator macros and thus they was not
handled by dead loop removal pass.
There are multiple cases of these in libstdc++ too and given that there
is textbook algorithm handling these, I would be in favour in keeping
CD-DCE and removing empty loop removal pass instead.  There are several
bugs in that pass too.

Note that there is interesting bootstrap time speedup seen on pretty-ipa
after enabling CD-DCE on loops and making pure-const to try to prove
finiteness of looping functions.  The speedup went away after I fixed
bug in pure-const that made const/pure functions marked as finite in
second pass even when we was not able to prove it.
It is something we probably want to lok into.  The spedup was
580s->560s.
> 
> Note that the comment you quote comes from Jeff Law, you may want to
> ask him what it means.  I don't see where we add the fake edges
> mentioned in point 2, for example.

It happens in calculate_dominance_info becuase post dominators are not
defined when you don't have every patch leading to EXIT.
So infinite loops and noreturns must be connected via fake edges.

Honza
> 
> Ciao!
> Steven



More information about the Gcc-patches mailing list