> On Mon, 17 Jun 2019, Jan Hubicka wrote:
> 
> > > 
> > > Hmm, !maybe_eq () -> ! max_size1 == size1 -> max_size != size1 thus
> > > I think && is correct if you want to disambiguate a[1].v2 and a[i].v1
> > > 
> > > But yes, if you don't want that then || is cheaper.  Probably add
> > > another testcase with one of the accesses with a constant index?
> > 
> > Hmm, OK, without unions I do not see how I could disambiguate something
> > with || and not &&.
> > Do we care about the testcase with union and constant accesses I sent?
> 
> Wouldn't it be as simple as
> 
> struct S { int i; int j; };
> 
> struct S a[10];
> 
> and a[i].i vs. a[1].j?  The first has offset = 0, max_size = sizeof(a)-4
> while the second has offset = 12, max_size = 4 and thus they overlap.

Ha, you are right of course (and in fact similar testcases was why
I started to look into this :)

Honza

Reply via email to