Hi,

On Mon, 28 Nov 2011, Jiangning Liu wrote:

> > > One more question...
> > >
> > > Can " i = i.6_18;" be sinked out of loop, because it doesn't have
> > memory
> > > dependence with others?
> > 
> > With current trunk the stores to i, a_p, b_p and k are sunken after the
> > loop.  (There are no aliasing problems because the decls can't
> > conflict).
> > 
> > What isn't sunken is the calculation of the &a[D.2248_7] expression.
> > First, the number of iterations of the inner loop can't be determined
> > by
> > current code (replacing i+=k with e.g. i++ could be handled for
> > instance).
> 
> Hi Michael,
> 
> Do you know what the essential problem is in the case of loop iteration
> uncertainty?

Yes, the number of iterations of the i loop simply is too difficult for 
our loop iteration calculator to comprehend:

  for (i=k; i<500; i+=k)

iterates for roundup((500-k)/k) time.  In particular if the step is 
non-constant our nr-of-iteration calculator gives up.

> I thought it was still an aliasing problem.

No.  All accesses are resolved to final objects (i.e. no pointers), and 
hence can be trivially disambiguated.


Ciao,
Michael.

Reply via email to