[PATCH] LazyValueInfo: Solve again when overdefined? - Expose ConstantRange

Ahmed Bougacha ahmed.bougacha at gmail.com
Mon Jul 1 21:45:44 PDT 2013


Hi all,

LazyValueInfo seems overly conservative by not even looking at a value it
set to overdefined, solved its LHS, and then came back to.

The oneliner lvi-solve-overdef.diff makes it look at overdefined values
again. It seems broken though, especially with the comment a few lines down
saying that it sets it to overdefined "so that cycles will terminate and be
conservatively correct.”

>From what I read though, if a value is a binop, LVI will look at the LHS,
figure out its lattice value, and then tell you that the binop is
overdefined, even though at this point all the needed information is there.

In my (limited) testing, this helps, and doesn’t seem to break anything.
Insights welcome!


The other patch exposes the constant range when available, which, even
though limited, can be very useful.

Thanks,

-- Ahmed Bougacha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130701/ece5a31b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lvi-solve-overdef.diff
Type: application/octet-stream
Size: 652 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130701/ece5a31b/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lvi-constantrange.diff
Type: application/octet-stream
Size: 1820 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130701/ece5a31b/attachment-0001.obj>


More information about the llvm-commits mailing list