summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll b/llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll
new file mode 100644
index 00000000000..9411b33f7b3
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/PhiEliminate.ll
@@ -0,0 +1,37 @@
+; Test a bunch of cases where the cfg simplification code should
+; be able to fold PHI nodes into computation in common cases. Folding the PHI
+; nodes away allows the branches to be eliminated, performing a simple form of
+; 'if conversion'.
+
+; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis > %t.xform
+; RUN: not grep phi %t.xform && grep ret %t.xform
+
+declare void %use(bool)
+declare void %use(int)
+
+
+void %test2(bool %c, bool %d, int %V, int %V2) {
+ br bool %d, label %X, label %F
+X:
+ br bool %c, label %T, label %F
+T:
+ br label %F
+F:
+ %B1 = phi bool [true, %0], [false, %T], [false, %X]
+ %I7 = phi int [%V, %0], [%V2, %T], [%V2, %X]
+ call void %use(bool %B1)
+ call void %use(int %I7)
+ ret void
+}
+
+void %test(bool %c, int %V, int %V2) {
+ br bool %c, label %T, label %F
+T:
+ br label %F
+F:
+ %B1 = phi bool [true, %0], [false, %T]
+ %I6 = phi int [%V, %0], [0, %T]
+ call void %use(bool %B1)
+ call void %use(int %I6)
+ ret void
+}
OpenPOWER on IntegriCloud