"Richard Guenther" <[EMAIL PROTECTED]> wrote on 06/05/2007 16:17:05:
> On 5/6/07, Ira Rosen <[EMAIL PROTECTED]> wrote: > > > > Yes, this should get vectorized. The problem is in data dependencies > > analysis. We fail to prove that s_5->a[i_16] and s_5->a[i_16] access the > > same memory location. I think, it happens since when we compare the bases > > of the data references (s_5->a and s_5->a) in base_object_differ_p(), we do > > that by comparing the trees (which are pointers) and not their content. > > > > I'll look into this and, I hope, I will submit a fix for that soon (I guess > > using operand_equal_p instead). > > Duh, that function looks interesting, indeed ;) > > It should probably use get_base_address () to get at the base object > and then operand_equal_p to compare them. Note that it strips outer > variable offset as well, like for a[i].b[j] you will get 'a' as the > base object. > If data-ref cannot handle this well, just copy get_base_address () and > stop at the first ARRAY_REF you come along. But maybe > base_object_differ_p is only called from contexts that are well-defined > in this regard. base_object_differ_p is called after the data-refs analysis. So we really compare base objects here, and no further peeling is needed at this stage. At least, that was our intention. Thanks, Ira > > Richard.