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: Not pulling out obvious non-aliasing global from the loop



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


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