Not pulling out obvious non-aliasing global from the loop

Andrew Pinski pinskia@physics.uc.edu
Mon Aug 30 23:09:00 GMT 2004


On Aug 25, 2004, at 8:33 PM, Andrew Pinski wrote:

> While working on a loop pass, I noticed that we were not pulling out 
> the load
> from a global variable from a loop where it obviously cannot alias 
> anything in
> the loop.  This seems like it would hurt the vectorizer also.
>
> This example comes from bzip2:
> unsigned short *q;
> #define NOSB 10
> void h1(int last)
> {
>   int i;
>   for (i=0;i<last+NOSB;i++)
>     q[i] = 0;
> }
>
> Tree after lim:


I looked at this again with respect to lim and found that lim was doing
invariant load motion because the cost was not high enough,  I think
we need to change the cost for this case even though it increases
register pressure as we then can do other optimizations on the loop 
which
actually decrease it and maybe even vectorize the loop.

Thanks,
Andrew Pinski



More information about the Gcc mailing list