From: Chris Lattner Date: Tue, 30 Oct 2001 03:22:59 +0000 (+0000) Subject: Add testcase for missed SCCP optimization X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=bfbed460dfedee1a1c6e2ee45fd920d6db6d4142;p=oota-llvm.git Add testcase for missed SCCP optimization git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1040 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/sccptest.ll b/test/sccptest.ll index a844fd09903..dd62bee7a98 100644 --- a/test/sccptest.ll +++ b/test/sccptest.ll @@ -1,5 +1,30 @@ implementation +; edgefailure - This function illustrates how SCCP is not doing it's job. This +; function should be optimized almost completely away: the loop should be +; analyzed to detect that the body executes exactly once, and thus the branch +; can be eliminated and code becomes trivially dead. This is distilled from a +; real benchmark (mst from Olden benchmark, MakeGraph function). When SCCP is +; fixed, this should be eliminated by a single SCCP application. TODO +; +int *"edgefailure"() +begin +bb1: + %A = malloc int + br label %bb2 +bb2: + %i = phi int [ %i2, %bb2 ], [ 0, %bb1 ] ;; Always 0 + %i2 = add int %i, 1 ;; Always 1 + store int %i, int *%A + %loop = setle int %i2, 0 ;; Always false + br bool %loop, label %bb2, label %bb3 + +bb3: + ret int * %A +end + + + int "test function"(int %i0, int %j0) %i1 = const int 1 %j1 = const int 1