diff options
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll')
-rw-r--r-- | llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll b/llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll index d32fd9ca4ef..d857c2869c3 100644 --- a/llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll +++ b/llvm/test/Transforms/SimplifyCFG/implied-cond-matching.ll @@ -1003,3 +1003,27 @@ sle_sle_isfalse: untaken: ret void } + +; A >=u 5 implies A <u 5 is false. +; CHECK-LABEL: @test_uge_ult_const +; CHECK-NOT: call void @is(i1 true) +; CHECK: call void @is(i1 false) +define void @test_uge_ult_const(i32 %a, i32 %b) { + %cmp1 = icmp uge i32 %a, %b + br i1 %cmp1, label %taken, label %untaken + +taken: + %cmp2 = icmp ult i32 %a, %b + br i1 %cmp2, label %istrue, label %isfalse + +istrue: + call void @is(i1 true) + ret void + +isfalse: + call void @is(i1 false) + ret void + +untaken: + ret void +} |