[PATCH] D29404: [ValueTracking] emit a warning when we detect a conflicting assumption (PR31809)

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 6 10:16:11 PST 2017


Thanks! I filed this example in:
https://llvm.org/bugs/show_bug.cgi?id=31882


On Wed, Feb 1, 2017 at 5:09 PM, Daniel Berlin <dberlin at dberlin.org> wrote:

> You may want to emit the same warning on test cases like this:
>  ; CHECK-LABEL: define i32 @_Z1ik(i32 %p)
>  define i32 @_Z1ik(i32 %p) {
>  entry:
>    %cmp = icmp eq i32 %p, 42
>    call void @llvm.assume(i1 %cmp)
>
>    ; CHECK: br i1 true, label %bb2, label %bb3
>    br i1 %cmp, label %bb2, label %bb3
>  bb2:
>    ; CHECK-NOT: %cmp3 =
>    %cmp3 = icmp eq i32 %p, 43
>    ; CHECK: store i8 undef, i8* null
>    call void @llvm.assume(i1 %cmp3)
>    ret i32 15
>  bb3:
>    ret i32 17
>  }
>
>
> (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)
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170206/de389e1e/attachment.html>


More information about the llvm-commits mailing list