This is the mail archive of the gcc@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: Variable Expansion Optimization


Steven Bosscher wrote:

> The old unroller used to produce better code in a few instances and it
> had a few extra features that the new unroller did not (such as
> splitting induction variables).  The new unroller can now do this and
> most missing pieces have been implemented too.  The only missing bit
> is RTL strength reduction.  There is a pass to do that on the LNO
> branch that could be merged soon.

You said above that there are loops which are generated in the expanders. If we
move strength reduction totally to the tree level, we would be missing this
optimization on RTL. Is this okay?

> (If all else fails I guess there still is loop-ivopts.c on the rtlopt
> branch...)
>
> The other missing bit in the new loop optimizer is prefetching, but
> again there is a pass for this on the LNO branch that, even in its
> current limited form, is better than the RTL one in loop.c.

Thanks for the detailed explanation.

So, it looks like we can get rid of the old loop unroller if we merge the LNO
strength reduction & prefetch passes for 3.5. Let's see what Mark decides about
this. There is a subtle miscompilation bug with the old unroller (PR 15725),
and I think we all agree that it would be better to drop obsolete code rather
than fixing it.

Giovanni Bajo



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