On Wed, Oct 7, 2009 at 5:35 PM, Tobias Grosser <gros...@fim.uni-passau.de> wrote: > On Wed, 2009-10-07 at 17:23 +0200, Richard Guenther wrote: >> On Wed, Oct 7, 2009 at 5:16 PM, Tobias Grosser >> <gros...@fim.uni-passau.de> wrote: >> > 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. >> >> It's undefined if N == 5 because the loop counter would overflow. > > > Why? > > The loop > > for (i=0; i < 5 - 50; i++) > > is equivalent to > > for (i=0; i < -45; i++) > > Which just evaluates to false and will not be executed. How can the loop > counter overflow?
Ah, indeed. Sorry for being confused. Is tree-niter-desc->assumptions or ->may_be_zero non-NULL? RIchard. > Tobi > >