diff --git a/llvm/test/Regression/Transforms/SimplifyCFG/PhiEliminate.ll b/llvm/test/Regression/Transforms/SimplifyCFG/PhiEliminate.ll new file mode 100644 index 000000000000..05cbe89bda54 --- /dev/null +++ b/llvm/test/Regression/Transforms/SimplifyCFG/PhiEliminate.ll @@ -0,0 +1,35 @@ +; 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-as < %s | opt -simplifycfg | llvm-dis > Output/%s.xform +; RUN: not grep phi Output/%s.xform && grep ret Output/%s.xform + +declare void %use(bool) +declare void %use(int) + +void %test(bool %c, int %V) { + br bool %c, label %T, label %F +T: + br label %F +F: + %B1 = phi bool [true, %0], [false, %T] + %B2 = phi bool [true, %T], [false, %0] + %I1 = phi int [1, %T], [0, %0] + %I2 = phi int [1, %0], [0, %T] + %I3 = phi int [17, %T], [0, %0] + %I4 = phi int [17, %T], [5, %0] + %I5 = phi int [%V, %T], [0, %0] + %I6 = phi int [%V, %0], [0, %T] + call void %use(bool %B1) + call void %use(bool %B2) + call void %use(int %I1) + call void %use(int %I2) + call void %use(int %I3) + call void %use(int %I4) + call void %use(int %I5) + call void %use(int %I6) + ret void +} +