For PR1319:
[oota-llvm.git] / test / Transforms / CorrelatedExprs / whet.ll
1 ; This code snippet is derived from the following "whetstone" style code:
2 ; int whet(int j) {
3 ;   if (j == 1) j = 2;
4 ;   else        j = 7;
5 ;   if (j > 2)  j = 0;
6 ;   else        j = 3;
7 ;   if (j < 1)  j = 10;
8 ;   else        j = 0;
9 ;   return j;
10 ;}
11 ;
12 ; This should eliminate all BB's except BB0, BB9, BB10
13 ;
14 ; RUN: llvm-upgrade < %s | llvm-as | opt -cee -instcombine -simplifycfg | \
15 ; RUN:   llvm-dis | not grep {bb\[2-8\]}
16
17 implementation   ; Functions:
18
19 int %whet(int %j) {
20 bb0:            ; No predecessors!
21         %cond220 = setne int %j, 1              ; <bool> [#uses=1]
22         br bool %cond220, label %bb3, label %bb4
23
24 bb3:            ; preds = %bb0
25         br label %bb4
26
27 bb4:            ; preds = %bb3, %bb0
28         %reg111 = phi int [ 7, %bb3 ], [ 2, %bb0 ]              ; <int> [#uses=1]
29         %cond222 = setle int %reg111, 2         ; <bool> [#uses=1]
30         br bool %cond222, label %bb6, label %bb7
31
32 bb6:            ; preds = %bb4
33         br label %bb7
34
35 bb7:            ; preds = %bb6, %bb4
36         %reg114 = phi int [ 3, %bb6 ], [ 0, %bb4 ]              ; <int> [#uses=1]
37         %cond225 = setgt int %reg114, 0         ; <bool> [#uses=1]
38         br bool %cond225, label %bb9, label %bb10
39
40 bb9:            ; preds = %bb7
41         br label %bb10
42
43 bb10:           ; preds = %bb9, %bb7
44         %reg117 = phi int [ 0, %bb9 ], [ 10, %bb7 ]             ; <int> [#uses=1]
45         ret int %reg117
46 }