xref: /llvm-project/llvm/test/Transforms/NewGVN/crash-usecounts.ll (revision 229640343e400394b315c6798c7c19e8a9bd188c)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2; RUN: opt -passes=newgvn -disable-output < %s
3
4define void @test(i1 %arg, i1 %arg1) {
5bb:
6  %alloca = alloca i64, i32 0, align 8
7  %alloca2 = alloca i64, i32 0, align 8
8  %load = load i64, ptr null, align 8
9  %icmp = icmp ult i64 0, %load
10  br i1 %icmp, label %bb24, label %bb25
11
12bb24:                                             ; preds = %bb
13  unreachable
14
15bb25:                                             ; preds = %bb
16  store i64 %load, ptr %alloca, align 8
17  %load26 = load i64, ptr addrspace(1) null, align 8
18  %icmp27 = icmp ugt i64 %load26, 1
19  br i1 %icmp27, label %bb28, label %bb29
20
21bb28:                                             ; preds = %bb25
22  unreachable
23
24bb29:                                             ; preds = %bb25
25  %icmp30 = icmp ugt i64 %load26, 0
26  br i1 %icmp30, label %bb34, label %bb31
27
28bb31:                                             ; preds = %bb38, %bb29
29  %load32 = load i64, ptr addrspace(1) null, align 8
30  %icmp33 = icmp ugt i64 %load32, 1
31  br i1 %icmp33, label %bb42, label %bb43
32
33bb34:                                             ; preds = %bb29
34  %load35 = load i64, ptr addrspace(1) null, align 8
35  store i64 %load35, ptr null, align 8
36  %load36 = load i64, ptr null, align 8
37  br label %bb37
38
39bb37:                                             ; preds = %bb37, %bb34
40  %phi = phi i64 [ 0, %bb37 ], [ %load36, %bb34 ]
41  %inttoptr = inttoptr i64 %phi to ptr addrspace(1)
42  br i1 false, label %bb37, label %bb38
43
44bb38:                                             ; preds = %bb37
45  %load39 = load i64, ptr null, align 8
46  %inttoptr40 = inttoptr i64 %load39 to ptr addrspace(1)
47  %load41 = load i64, ptr addrspace(1) %inttoptr40, align 8
48  %shl = shl i64 %load26, 0
49  %and = and i64 %shl, 0
50  br label %bb31
51
52bb42:                                             ; preds = %bb31
53  unreachable
54
55bb43:                                             ; preds = %bb31
56  %load44 = load i64, ptr null, align 8
57  %load45 = load i64, ptr null, align 8
58  %icmp46 = icmp ugt i64 1, %load45
59  br i1 %icmp46, label %bb51, label %bb60
60
61bb47:                                             ; preds = %bb60, %bb55, %bb51
62  %load48 = load i64, ptr %alloca, align 8
63  %inttoptr49 = inttoptr i64 %load48 to ptr addrspace(1)
64  %load50 = load i64, ptr addrspace(1) %inttoptr49, align 8
65  br i1 %arg, label %bb63, label %bb75
66
67bb51:                                             ; preds = %bb43
68  %load52 = load i64, ptr addrspace(1) null, align 8
69  store i64 %load52, ptr %alloca2, align 8
70  %load53 = load i64, ptr null, align 8
71  store i64 %load53, ptr null, align 8
72  %icmp54 = icmp ult i64 0, %load32
73  br i1 %icmp54, label %bb55, label %bb47
74
75bb55:                                             ; preds = %bb51
76  %load56 = load i64, ptr null, align 8
77  %or = or i64 %load56, 0
78  %inttoptr57 = inttoptr i64 %or to ptr addrspace(1)
79  %load58 = load i64, ptr addrspace(1) %inttoptr57, align 8
80  %and59 = and i64 %load32, 0
81  br label %bb47
82
83bb60:                                             ; preds = %bb43
84  %or61 = or i64 %load44, 0
85  %load62 = load i64, ptr addrspace(1) null, align 8
86  store i64 %load62, ptr null, align 8
87  br label %bb47
88
89bb63:                                             ; preds = %bb47
90  %load64 = load i64, ptr addrspace(1) inttoptr (i64 64 to ptr addrspace(1)), align 8
91  %inttoptr65 = inttoptr i64 %load64 to ptr addrspace(1)
92  store i64 0, ptr addrspace(1) %inttoptr65, align 8
93  %or66 = or i64 %load64, 4
94  %inttoptr67 = inttoptr i64 %or66 to ptr addrspace(1)
95  store i64 0, ptr addrspace(1) %inttoptr67, align 8
96  %or68 = or i64 %load64, 36
97  %inttoptr69 = inttoptr i64 %or68 to ptr addrspace(1)
98  store i64 0, ptr addrspace(1) %inttoptr69, align 8
99  %or70 = or i64 %load64, 68
100  %inttoptr71 = inttoptr i64 %or70 to ptr addrspace(1)
101  store i64 0, ptr addrspace(1) %inttoptr71, align 8
102  %load72 = load i64, ptr null, align 8
103  %shl73 = shl i64 %load72, 0
104  %or74 = or i64 %shl73, 0
105  store i64 %or74, ptr null, align 8
106  unreachable
107
108bb75:                                             ; preds = %bb47
109  br i1 %arg1, label %bb88, label %bb76
110
111bb76:                                             ; preds = %bb75
112  %load77 = load i64, ptr addrspace(1) inttoptr (i64 64 to ptr addrspace(1)), align 8
113  %inttoptr78 = inttoptr i64 %load77 to ptr addrspace(1)
114  store i64 0, ptr addrspace(1) %inttoptr78, align 8
115  %or79 = or i64 %load77, 4
116  %inttoptr80 = inttoptr i64 %or79 to ptr addrspace(1)
117  store i64 0, ptr addrspace(1) %inttoptr80, align 8
118  %or81 = or i64 %load77, 36
119  %inttoptr82 = inttoptr i64 %or81 to ptr addrspace(1)
120  store i64 0, ptr addrspace(1) %inttoptr82, align 8
121  %or83 = or i64 %load77, 68
122  %inttoptr84 = inttoptr i64 %or83 to ptr addrspace(1)
123  store i64 0, ptr addrspace(1) %inttoptr84, align 8
124  %load85 = load i64, ptr null, align 8
125  %shl86 = shl i64 %load85, 0
126  %or87 = or i64 %shl86, 0
127  store i64 %or87, ptr null, align 8
128  unreachable
129
130bb88:                                             ; preds = %bb75
131  %load89 = load i64, ptr addrspace(1) null, align 8
132  %icmp90 = icmp ugt i64 %load89, 0
133  br i1 %icmp90, label %bb91, label %bb92
134
135bb91:                                             ; preds = %bb88
136  unreachable
137
138bb92:                                             ; preds = %bb88
139  br i1 false, label %bb93, label %bb95
140
141bb93:                                             ; preds = %bb93, %bb92
142  %phi94 = phi i64 [ 0, %bb93 ], [ %load89, %bb92 ]
143  br label %bb93
144
145bb95:                                             ; preds = %bb92
146  %load96 = load i64, ptr null, align 8
147  br label %bb98
148
149bb97:                                             ; preds = %bb98
150  ret void
151
152bb98:                                             ; preds = %bb98, %bb95
153  %phi99 = phi i64 [ %load96, %bb95 ], [ 0, %bb98 ]
154  %inttoptr100 = inttoptr i64 %phi99 to ptr
155  %load101 = load i64, ptr %inttoptr100, align 8
156  br i1 false, label %bb98, label %bb97
157}
158