Do not give up early on access path oracle
Jan Hubicka
hubicka@ucw.cz
Mon Jun 17 14:33:00 GMT 2019
> >> >
> >> > A more stricter test would be
> >> >
> >> > if (!maybe_eq (max_size1, size1) && !maybe_eq (max_size2, size2))
> >> > return true;
> >> > /* If there's a variable access in one of the refs fall through
> >> > to access-path based disambiguation. */
> >> >
> >> > where you'd need to pass down ao_ref_size in addition to max_size as well.
> >>
> >> Proably || here?
> >
> > 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?
>
> Might be misunderstanding, but isn't the check for a variable access
> !known_eq (max_size1, size1) == maybe_ne (max_size1, size1)? "maybe_eq"
> means "could be equal in some circumstances, even if they're not always
> equal".
Seems I am getting progressively more confused. I think I want to pass
the size down from ao_ref to the functions and then see if they are
always equal.
Why would I want to use maybe variant?
Honza
>
> Richard
More information about the Gcc-patches
mailing list