Add testcase for missed SCCP optimization
authorChris Lattner <sabre@nondot.org>
Tue, 30 Oct 2001 03:22:59 +0000 (03:22 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 30 Oct 2001 03:22:59 +0000 (03:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1040 91177308-0d34-0410-b5e6-96231b3b80d8

test/sccptest.ll

index a844fd099036ac3e11c6d47ecec1e3f1494daa89..dd62bee7a98dc96ce9eca2ce0a86303fcc2ea4fc 100644 (file)
@@ -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