This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/32377] can't determine dependence (source/destination overlap without more than size)



------- 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
<gcc-bugzilla@gcc.gnu.org> 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


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