More testcases for SCCP

llvm-svn: 2444
diff --git a/llvm/test/Regression/Transforms/SCCP/2002-05-02-EdgeFailure.ll b/llvm/test/Regression/Transforms/SCCP/2002-05-02-EdgeFailure.ll
new file mode 100644
index 0000000..341847bc
--- /dev/null
+++ b/llvm/test/Regression/Transforms/SCCP/2002-05-02-EdgeFailure.ll
@@ -0,0 +1,28 @@
+; 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.
+;
+; RUN: if as < %s | opt -sccp | dis | grep loop
+; RUN: then exit 1
+; RUN: else exit 0
+; RUN: fi
+
+int *"test"()
+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
+