diff options
Diffstat (limited to 'llvm/test/Regression/Transforms/SCCP/sccptest.ll')
| -rw-r--r-- | llvm/test/Regression/Transforms/SCCP/sccptest.ll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/Regression/Transforms/SCCP/sccptest.ll b/llvm/test/Regression/Transforms/SCCP/sccptest.ll new file mode 100644 index 00000000000..c4eff5e3425 --- /dev/null +++ b/llvm/test/Regression/Transforms/SCCP/sccptest.ll @@ -0,0 +1,39 @@ +; This is the test case taken from appel's book that illustrates a hard case +; that SCCP gets right. BB3 should be completely eliminated. +; +; RUN: if as < %s | opt -sccp -dce | dis | grep BB3 +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi + +int "test function"(int %i0, int %j0) +begin +BB1: + br label %BB2 +BB2: + %j2 = phi int [%j4, %BB7], [1, %BB1] + %k2 = phi int [%k4, %BB7], [0, %BB1] + %kcond = setlt int %k2, 100 + br bool %kcond, label %BB3, label %BB4 + +BB3: + %jcond = setlt int %j2, 20 + br bool %jcond, label %BB5, label %BB6 + +BB4: + ret int %j2 + +BB5: + %k3 = add int %k2, 1 + br label %BB7 + +BB6: + %k5 = add int %k2, 1 + br label %BB7 + +BB7: + %j4 = phi int [1, %BB5], [%k2, %BB6] + %k4 = phi int [%k3, %BB5], [%k5, %BB6] + br label %BB2 +end + |

