Do not give up early on access path oracle
Richard Biener
rguenther@suse.de
Mon Jun 17 13:43:00 GMT 2019
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.
Richard.
More information about the Gcc-patches
mailing list