[PATCH] D65402: [Attributor][MustExec] Deduce dereferenceable and nonnull attribute using MustBeExecutedContextExplorer

Hideto Ueno via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 7 01:12:45 PDT 2019


uenoku added a comment.

In D65402#1696345 <https://reviews.llvm.org/D65402#1696345>, @jdoerfert wrote:

> In D65402#1696036 <https://reviews.llvm.org/D65402#1696036>, @uenoku wrote:
>
> > In D65402#1695253 <https://reviews.llvm.org/D65402#1695253>, @jdoerfert wrote:
> >
> > > In D65402#1694872 <https://reviews.llvm.org/D65402#1694872>, @uenoku wrote:
> > >
> > > > Currently, any use is not tracked so nothing about A[1] or A[-2] is deduced.
> > >
> > >
> > > As long as we have a test that is fine.
> > >
> > > > This would be solved once making it track gep instruction. But beforehand, I strongly suggest separating deduction for known/assumption respectively.
> > >
> > > What do you mean by the separation part?
> >
> >
> > I mean, running two different deduction scheme(known, assumption) might cause an unpredictable result.
> >
> >   define i32* @test_for_minus_index(i32* %p) {
> >     %q = getelementptr inbounds i32, i32* %p, i32 -2
> >     store i32 1, i32* %q
> >     ret i32* %q
> >   }
> >
> >
> > AANonNullArgument is composed of AAArgumentFromCallSiteArguments, AAFromMustBeExecutedContext.
> >  Assume that gep is tracked in `followUse`.
> >
> > Iteration 1 :
> >
> > - AAFromMustBeExecutedContext will traverse uses of `%p` and prepare uses of `%q` for next iteration.
> > - AAArgumentFromCallSiteArguments will call `indicatePessimisticFixpoint` because the function is not `internal` function. AANonNullArgument has already reached to pessimistic fixpoint so nonnull won't be deduced.
> >
> >   This example is so simple that we can debug them but it is hard to debug more complex ones.
>
>
> I see. You can explore uses exhaustively though that is a "local" solution to a general problem.
>  I think we need to keep known & assumed together but we should provide a way for AAs that have multiple deduction strategies to exhaust them seperatly, e.g, `AAArgumentFromCallSiteArguments` is known to have 2 schemes so we should track their "fixpoints" separate somehow.
>  In addition, or as an alternative, we could allow updates for AAs in a fixpoint if they opt-in to it. They would do so if they can improve based on known-information around them.


Looks good. Anyway, the current code maintains soundness ( "general" solution might not be reached) so I'll commit it if there is no problem.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65402/new/

https://reviews.llvm.org/D65402





More information about the llvm-commits mailing list