On Wed, 2009-10-07 at 16:42 +0200, Richard Guenther wrote:
> On Wed, Oct 7, 2009 at 4:37 PM, Tobias Grosser
> <gros...@fim.uni-passau.de> wrote:
> > I try to analyse this code:
> > ------------------------------------------------------
> > int foo (int N)
> > {
> >  int ftab[257];
> >  int i, j;
> >
> >  for (i = 0; i < N  - 7488645; i++)
> >    j = ftab [i];
> >
> >  return j;
> > }
> > ------------------------------------------------------
> >
> > The number of iterations I get is:
> >
> > (unsigned int) N_5(D) + 0x0ffffffff
> >
> > However I expect it to be
> >
> > (unsigned int) N_5(D) + (-1)
> 
> No, that would be (unsigned int) (N_5(D) + -1) instead.
> 
> It's fold that canonicalizes this to the above form - you
> simply have to deal with it (unsigned arithmetic, that is).

OK. So I need to understand this better.

E.g:

int foo (int N)
{ 
  int ftab[257];
  int i, j;
  
  for (i = 0; i < N  - 50; i++)
    j = ftab [i];
  
  return j;
} 

Number of latch executions: (unsigned int) N_5(D) + 0x0ffffffcd

What happens if N == 5? I would expect the number of latch iterations to
be 0 as i < 5 - 50 is always false. However using the upper expression I
get something like
5 + 0x0ffffffcd == 0x0ffffffd2
what is a lot bigger than 0.

Thanks for your help

Tobi



Reply via email to