This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

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


> On Mon, Apr 27, 2009 at 6:46 AM, Jan Hubicka <hubicka@ucw.cz> 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
> > 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.
> 
> 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').

Well, for noreturn I can assume one can take every noreturn block
(including EXIT) as root of the forest, but infinite loops with no exit
edges?

In general it seems that the fake edge idea seems to do the job here
just fine :)

Honza


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