Bug 16358: simplify SCEVs with assumptions

Andrew Trick atrick at apple.com
Mon Nov 25 17:54:54 PST 2013

On Nov 25, 2013, at 5:52 PM, Sebastian Pop <spop at codeaurora.org> wrote:

> Sebastian Pop wrote:
>> Also another problem that I have seen is that the expression niter computes is
>> cached, so any subsequent queries to niter would have to provide the assumptions
>> under which the niter expression has been computed. So one would have to attach
>> to the cached value of a SCEV the assumptions under which that expression has
>> been computed.
> One idea that is used in ISL and before in other polyhedral tools like PIP is to
> build a "quast" (quasi affine syntax tree) that lists the constraints under
> which the expression is nice and known and the constraints under which the
> expression cannot be computed: so the expression niter computes would look like
> if ({1,+,1}<%for> < 2**16)
>  {1,+,1}<%for>
> else
>  unknown
> That way one would explicitely get the constraints under which the expression
> has a nice form, and the cases under which it cannot be computed.

That sounds great, I’m glad someone else has figured it out.

More information about the llvm-commits mailing list