diff --git a/test/Transforms/CorrelatedExprs/looptest.ll b/test/Transforms/CorrelatedExprs/looptest.ll new file mode 100644 index 00000000000..3af0814eea6 --- /dev/null +++ b/test/Transforms/CorrelatedExprs/looptest.ll @@ -0,0 +1,44 @@ +; This testcase tests to see if adds and PHI's are handled in their full +; generality. This testcase comes from the following C code: +; +; void f() { +; int i; +; for (i = 1; i < 100; i++) { +; if (i) +; g(); +; } +; } +; +; Note that this is a "feature" test, not a correctness test. +; +; RUN: if as < %s | opt -cee -simplifycfg | dis | grep cond213 +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi +; +implementation ; Functions: + +declare void %g() + +void %f() { +bb0: ; No predecessors! + br label %bb2 + +bb2: ; preds = %bb4, %bb0 + %cann-indvar = phi int [ 0, %bb0 ], [ %add1-indvar, %bb4 ] ; [#uses=2] + %add1-indvar = add int %cann-indvar, 1 ; [#uses=2] + %cond213 = seteq int %add1-indvar, 0 ; [#uses=1] + br bool %cond213, label %bb4, label %bb3 + +bb3: ; preds = %bb2 + call void %g( ) + br label %bb4 + +bb4: ; preds = %bb3, %bb2 + %reg109 = add int %cann-indvar, 2 ; [#uses=1] + %cond217 = setle int %reg109, 99 ; [#uses=1] + br bool %cond217, label %bb2, label %bb5 + +bb5: ; preds = %bb4 + ret void +}