Jan Hubicka - Re: [dataflow] [RFC] Remove many almost useless DCE passes (original) (raw)

This is the mail archive of the gcc-patches@gcc.gnu.orgmailing 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]

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]