<div dir="ltr">Thanks, maybe we could use ScalarEvolution in LazyValueInfo if it is available?</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 24, 2017 at 1:44 PM, John Regehr via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Since they are different static analyses there's no reason to expect them to agree, but they should both be conservative. In other words, if you like you can compute the intersection of the two ConstantRanges and the result should still be an overapproximation of the values that will occur at run time.<br>
<br>
John<div><div class="h5"><br>
<br>
<br>
<br>
On 07/24/2017 02:34 PM, Hongbin Zheng via llvm-dev wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Hi,<br>
<br>
Both LazyValueInfo and ScalarEvolution can calculate a constant range for an LLVM Value.<br>
I found that some times they do not agree, may be I interpreted them incorrectly<br>
<br>
For example in the following IR:<br>
<br>
bb85:                                             ; preds = %bb85, %bb73<br>
   %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ]<br>
   %tmp95 = add nsw i32 %tmp86, 1<br>
   %tmp96 = icmp slt i32 %tmp95, 20<br>
   br i1 %tmp96, label %bb85, label %bb97<br>
<br>
LazyValueInfo give:<br>
<br>
POP   %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ] in bb85 = constantrange<-<a href="tel:2147483648" value="+12147483648" target="_blank">2147483648</a>, 20><br>
<br>
While ScalarEvolution give:<br>
<br>
  %tmp86 = phi i32 [ 1, %bb73 ], [ %tmp95, %bb85 ]<br>
   -->  {1,+,1}<nuw><nsw><%bb85> U: [1,20) S: [1,20)             Exits: 19               LoopDispositions: { %bb85: Computable, %bb73: Variant, %bb46: Variant }<br>
<br>
In this example, the range of %tmp86 is <-<a href="tel:2147483648" value="+12147483648" target="_blank">2147483648</a>, 20> from LazyValueInfo, but it is [1,20) from ScalarEvolution.<br>
<br>
How can I interpret these results?<br>
Is there a way to get [0, 20) for %tmp86 in LazyValueInfo?<br>
<br>
Thanks<br>
Hongbin<br>
<br>
<br>
<br>
<br>
<br></div></div>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br>
</blockquote>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>