<div dir="ltr">Thanks! I filed this example in:<br><a href="https://llvm.org/bugs/show_bug.cgi?id=31882" target="_blank">https://llvm.org/bugs/show_<wbr>bug.cgi?id=31882</a><br><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 1, 2017 at 5:09 PM, Daniel Berlin <span dir="ltr"><<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">You may want to emit the same warning on test cases like this:<br><div> ; CHECK-LABEL: define i32 @_Z1ik(i32 %p)</div><div> define i32 @_Z1ik(i32 %p) {</div><div> entry:</div><div>   %cmp = icmp eq i32 %p, 42</div><div>   call void @llvm.assume(i1 %cmp)</div><div><br></div><div>   ; CHECK: br i1 true, label %bb2, label %bb3</div><div>   br i1 %cmp, label %bb2, label %bb3</div><div> bb2:</div><div>   ; CHECK-NOT: %cmp3 =</div><div>   %cmp3 = icmp eq i32 %p, 43</div><div>   ; CHECK: store i8 undef, i8* null</div><div>   call void @llvm.assume(i1 %cmp3)</div><div>   ret i32 15</div><div> bb3:</div><div>   ret i32 17</div><div> }</div><div><br></div><div><br></div><div>(note that if you propagate the result of cmp, you think the second assume is false. I'd say anywhere we prove an assume to be both false, and true, you should emit this warning :P)</div></div><br></blockquote></div></div></div>