New testcase, unanalyzed.
[oota-llvm.git] / test / Transforms / ADCE / 2002-07-17-PHIAssertion.ll
1 ; This testcase was extracted from the gzip SPEC benchmark
2 ;
3 ; RUN: as < %s | opt -adce
4
5 %inptr = internal uninitialized global uint             ; <uint*> [#uses=2]
6 %outcnt = internal uninitialized global uint            ; <uint*> [#uses=1]
7 %bb = internal uninitialized global ulong               ; <ulong*> [#uses=1]
8 %bk = internal uninitialized global uint                ; <uint*> [#uses=5]
9 %hufts = internal uninitialized global uint             ; <uint*> [#uses=2]
10
11 implementation   ; Functions:
12
13 int %inflate() {
14 bb0:                                    ;[#uses=0]
15         %e = alloca int         ; <int*> [#uses=2]
16         br label %bb1
17
18 bb1:                                    ;[#uses=2]
19         store uint 0, uint* %outcnt
20         store uint 0, uint* %bk
21         store ulong 0, ulong* %bb
22         br label %bb2
23
24 bb2:                                    ;[#uses=2]
25         %reg128 = phi uint [ %reg130, %bb6 ], [ 0, %bb1 ]               ; <uint> [#uses=2]
26         store uint 0, uint* %hufts
27         %reg236 = call int %inflate_block( int* %e )            ; <int> [#uses=2]
28         %cond237 = seteq int %reg236, 0         ; <bool> [#uses=1]
29         br bool %cond237, label %bb4, label %bb3
30
31 bb3:                                    ;[#uses=1]
32         ret int %reg236
33
34 bb4:                                    ;[#uses=2]
35         %reg117 = load uint* %hufts             ; <uint> [#uses=2]
36         %cond241 = setle uint %reg117, %reg128          ; <bool> [#uses=1]
37         br bool %cond241, label %bb6, label %bb5
38
39 bb5:                                    ;[#uses=2]
40         br label %bb6
41
42 bb6:                                    ;[#uses=3]
43         %reg130 = phi uint [ %reg117, %bb5 ], [ %reg128, %bb4 ]         ; <uint> [#uses=1]
44         %reg118 = load int* %e, uint 0          ; <int> [#uses=1]
45         %cond244 = seteq int %reg118, 0         ; <bool> [#uses=1]
46         br bool %cond244, label %bb2, label %bb7
47
48 bb7:                                    ;[#uses=1]
49         %reg126 = load uint* %bk                ; <uint> [#uses=1]
50         %cond247 = setle uint %reg126, 7                ; <bool> [#uses=1]
51         br bool %cond247, label %bb9, label %bb8
52
53 bb8:                                    ;[#uses=2]
54         %reg120 = load uint* %bk                ; <uint> [#uses=1]
55         %reg121 = add uint %reg120, 4294967288          ; <uint> [#uses=1]
56         store uint %reg121, uint* %bk
57         %reg122 = load uint* %inptr             ; <uint> [#uses=1]
58         %reg123 = add uint %reg122, 4294967295          ; <uint> [#uses=1]
59         store uint %reg123, uint* %inptr
60         %reg119 = load uint* %bk                ; <uint> [#uses=1]
61         %cond256 = setgt uint %reg119, 7                ; <bool> [#uses=1]
62         br bool %cond256, label %bb8, label %bb9
63
64 bb9:                                    ;[#uses=2]
65         call void %flush_window( )
66         ret int 0
67
68 bb10:                                   ;[#uses=0]
69         ret int 42
70 }
71
72 declare void %flush_window()
73
74 declare int %inflate_block(int*)