Renamed `as' => `llvm-as', `dis' => `llvm-dis', `link' => `llvm-link'.
[oota-llvm.git] / test / Transforms / SCCP / sccptest.ll
1 ; This is the test case taken from appel's book that illustrates a hard case
2 ; that SCCP gets right. BB3 should be completely eliminated.
3 ;
4 ; RUN: llvm-as < %s | opt -sccp -constprop -dce -cfgsimplify | llvm-dis | not grep BB3
5
6 int %test function(int %i0, int %j0) {
7 BB1:
8         br label %BB2
9 BB2:
10         %j2 = phi int [%j4, %BB7], [1, %BB1]
11         %k2 = phi int [%k4, %BB7], [0, %BB1]
12         %kcond = setlt int %k2, 100
13         br bool %kcond, label %BB3, label %BB4
14
15 BB3:
16         %jcond = setlt int %j2, 20
17         br bool %jcond, label %BB5, label %BB6
18
19 BB4:
20         ret int %j2
21
22 BB5:
23         %k3 = add int %k2, 1
24         br label %BB7
25
26 BB6:
27         %k5 = add int %k2, 1
28         br label %BB7
29
30 BB7:
31         %j4 = phi int [1, %BB5], [%k2, %BB6]
32         %k4 = phi int [%k3, %BB5], [%k5, %BB6]
33         br label %BB2
34 }