summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/JumpThreading/basic.ll
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-08-31 17:59:07 +0000
committerOwen Anderson <resistor@mac.com>2010-08-31 17:59:07 +0000
commitada06237251ccd647903dabeace196d2ca220d60 (patch)
tree2cad568d7984ed1522219ba771a670eec4a525f5 /llvm/test/Transforms/JumpThreading/basic.ll
parentad9b6de3b6245263a097b770110a2a1af58c6b22 (diff)
downloadbcm5719-llvm-ada06237251ccd647903dabeace196d2ca220d60.tar.gz
bcm5719-llvm-ada06237251ccd647903dabeace196d2ca220d60.zip
Add a micro-test for the transforms I added to JumpThreading.
I have not been able to find a way to test each in isolation, for a few reasons: 1) The ability to look-through non-i1 BinaryOperator's requires the ability to look through non-constant ICmps in order for it to ever trigger. 2) The ability to do LVI-powered PHI value determination only matters in cases that ProcessBranchOnPHI can't handle. Since it already handles all the cases without other instructions in the def-use chain between the PHI and the branch, it requires the ability to look through ICmps and/or BinaryOperators as well. llvm-svn: 112611
Diffstat (limited to 'llvm/test/Transforms/JumpThreading/basic.ll')
-rw-r--r--llvm/test/Transforms/JumpThreading/basic.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/JumpThreading/basic.ll b/llvm/test/Transforms/JumpThreading/basic.ll
index ab1ab73f4e4..a2a5c1b3fe3 100644
--- a/llvm/test/Transforms/JumpThreading/basic.ll
+++ b/llvm/test/Transforms/JumpThreading/basic.ll
@@ -421,4 +421,34 @@ F2:
; CHECK-NEXT: br i1 %N, label %T2, label %F2
}
+; CHECK: @test14
+define i32 @test14(i32 %in) {
+entry:
+ %A = icmp eq i32 %in, 0
+; CHECK: br i1 %A, label %right_ret, label %merge
+ br i1 %A, label %left, label %right
+
+; CHECK-NOT: left:
+left:
+ br label %merge
+
+; CHECK-NOT: right:
+right:
+ %B = call i32 @f1()
+ br label %merge
+
+merge:
+; CHECK-NOT: %C = phi i32 [%in, %left], [%B, %right]
+ %C = phi i32 [%in, %left], [%B, %right]
+ %D = add i32 %C, 1
+ %E = icmp eq i32 %D, 2
+ br i1 %E, label %left_ret, label %right_ret
+
+; CHECK: left_ret:
+left_ret:
+ ret i32 0
+
+right_ret:
+ ret i32 1
+}
OpenPOWER on IntegriCloud