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: [dataflow] [RFC] Remove many almost useless DCE passes


> On 2/27/07, Vladimir Makarov <vmakarov@redhat.com> wrote:
> >I  am
> >sure it will be even bigger after the patch.
> 
> Since you keep asking for the numbers, perhaps you should show some
> numbers too to back up this kind of assertions ;-)

Probably it should be Richard to announce it, since he did the work of
configuring the testers, but
http://www.suse.de/~gcctest/SPEC/CINT/sb-haydn-df-64/
http://www.suse.de/~gcctest/SPEC/CFP/sb-haydn-df-64/
and
http://www.suse.de/~gcctest/c++bench-haydn-df/
now track DF branch daily, so after comitting the patch in question, we
should pretty easilly be able to qualify amount of damage on code size
by dropping the passes.  Despite the noise issues, one can see that the
reproducibility of runs on the periodic testers is pretty good (from the
mainline runs done on same machine).
It might make sense to wait day or two to get some history in graphs and
see how much noise DF branch is getting.

As a person who introduced most of the trivial DCE passes originally, I
would probably mention that the original motivation was primarily to
limit hidden dependencies in between passes since I needed to reorganize
the optimization queue for CFG branch progress.  It went without
measurable slowdown in my testing years back and it also improved SPEC
scores, so it seemed well justified change that time (otherwise some
legacy passes like old loop was actually ICEing in presence of dead code
in some places)

However the code quality improvements IMO was because we was unable to
do proper DCE before flow pass that we just before register allocation
and thus multiple passes (trivial dce, CSE, cleanup_cfg, loop
optimizer's induction variable stuff) was slowly removing unnecesary
stuff in multiple passes causing iterative behaviour so much more runs
was needed.  Today we should have almost no non-trivial dead code
comming to RTL world because of the tree level DCE.  RTL expansion
introduces dead code, but mostly trivial, so dropping most of the not so
well justified trivial DCE passes seems very sane.  If it worsens code
(I would hope it doesn't), we should figure out what is going wrong and
probably fix it elsewhere.

Honza
> 
> BTW we have a pretty good clue where the code size increase you're
> seeing comes from, btw.  I am working on a fix, in fact.
> 
> Gr.
> Steven


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