------- Comment #8 from sebpop at gmail dot com 2007-07-03 13:57 ------- Subject: Re: can't determine dependence (source/destination overlap without more than size)
On 3 Jul 2007 12:57:33 -0000, irar at il dot ibm dot com <[EMAIL PROTECTED]> wrote: > for (i = 0; i < N; i++){ > ia[i+1] = ia[i] * 4; > } > the ddr is {ld, st} and distance 1 > > and for > for (i = 0; i < N; i++){ > ia[i] = ia[i+1] * 4; > } > the ddr is also {ld, st} with distance 1. > > How can we distinguish between these cases? > There is no way to distinguish between these two in the classical distance vector representation, however I have seen that I only have that code in the graphite branch: DDR_REVERSED_P (ddr) = true; I'm setting this in the block of code that is tested for not being lexico positive vectors: if (!lambda_vector_lexico_pos (dist_v, DDR_NB_LOOPS (ddr))) I can submit a patch for merging that part of code in trunk if you need this flag to test if you are in one or the other case. But again in the classical distance representation this cannot be distinguished. Sebastian -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32377