Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / Transforms / SCCP / 2002-05-02-EdgeFailure.ll
1 ; edgefailure - This function illustrates how SCCP is not doing it's job.  This
2 ; function should be optimized almost completely away: the loop should be
3 ; analyzed to detect that the body executes exactly once, and thus the branch
4 ; can be eliminated and code becomes trivially dead.  This is distilled from a
5 ; real benchmark (mst from Olden benchmark, MakeGraph function).  When SCCP is
6 ; fixed, this should be eliminated by a single SCCP application.
7 ;
8 ; RUN: llvm-upgrade < %s | llvm-as | opt -sccp | llvm-dis | not grep loop
9
10 int* %test() {
11 bb1:
12         %A = malloc int
13         br label %bb2
14 bb2:
15         %i = phi int [ %i2, %bb2 ], [ 0, %bb1 ]   ;; Always 0
16         %i2 = add int %i, 1                       ;; Always 1
17         store int %i, int *%A
18         %loop = setle int %i2, 0                  ;; Always false
19         br bool %loop, label %bb2, label %bb3
20
21 bb3:
22         ret int * %A
23 }