This is the mail archive of the
mailing list for the GCC project.
Re: pretty-ipa merge 17: CD-DCE wrt cyclic CFGs fix
On Mon, Apr 27, 2009 at 6:46 AM, Jan Hubicka <firstname.lastname@example.org> wrote:
>> 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
>> 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.
Well, this is not strictly true, it is just a forest with multiple roots :)
Even in that form, it can still be used for control dependence
calculation (since you only need to know whether one is an ancestor of
another in a given post-dominator tree. If they are in different
trees, the answer is 'no').