[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / test / Analysis / AliasSet / guards.ll
blob732c540c981cb7d4d88ff54fcb6898770f720469
1 ; RUN: opt -basicaa -print-alias-sets -S -o - < %s 2>&1 | FileCheck %s
2 declare void @llvm.experimental.guard(i1, ...)
4 ; CHECK: Alias sets for function 'test0':
5 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
6 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
7 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
8 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
9 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
10 define void @test0(i1 %cond_b) {
11 entry:
12   %a = alloca i8, align 1
13   %b = alloca i8, align 1
14   %0 = load i8, i8* %a
15   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
16   %1 = load i8, i8* %b
17   ret void
20 ; CHECK: Alias sets for function 'test1':
21 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
22 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
23 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
24 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
25 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
26 define void @test1(i1 %cond_b) {
27 entry:
28   %a = alloca i8, align 1
29   %b = alloca i8, align 1
30   %0 = load i8, i8* %a
31   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
32   store i8 1, i8* %b
33   ret void
36 ; CHECK: Alias sets for function 'test2':
37 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
38 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
39 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
40 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
41 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
42 define void @test2(i1 %cond_b) {
43 entry:
44   %a = alloca i8, align 1
45   %b = alloca i8, align 1
46   store i8 0, i8* %a
47   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
48   %0 = load i8, i8* %b
49   ret void
52 ; CHECK: Alias sets for function 'test3':
53 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
54 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
55 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
56 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
57 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
58 define void @test3(i1 %cond_b) {
59 entry:
60   %a = alloca i8, align 1
61   %b = alloca i8, align 1
62   store i8 0, i8* %a
63   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
64   store i8 1, i8* %b
65   ret void
68 ; CHECK: Alias sets for function 'test4':
69 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
70 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
71 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
72 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
73 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
74 define void @test4(i1 %cond_a) {
75 entry:
76   %a = alloca i8, align 1
77   %b = alloca i8, align 1
78   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
79   %0 = load i8, i8* %a
80   %1 = load i8, i8* %b
81   ret void
84 ; CHECK: Alias sets for function 'test5':
85 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
86 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
87 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
88 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
89 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
90 define void @test5(i1 %cond_a) {
91 entry:
92   %a = alloca i8, align 1
93   %b = alloca i8, align 1
94   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
95   %0 = load i8, i8* %a
96   store i8 1, i8* %b
97   ret void
100 ; CHECK: Alias sets for function 'test6':
101 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
102 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
103 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
104 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
105 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
106 define void @test6(i1 %cond_a) {
107 entry:
108   %a = alloca i8, align 1
109   %b = alloca i8, align 1
110   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
111   store i8 0, i8* %a
112   %0 = load i8, i8* %b
113   ret void
116 ; CHECK: Alias sets for function 'test7':
117 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
118 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
119 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
120 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
121 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
122 define void @test7(i1 %cond_a) {
123 entry:
124   %a = alloca i8, align 1
125   %b = alloca i8, align 1
126   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
127   store i8 0, i8* %a
128   store i8 1, i8* %b
129   ret void
132 ; CHECK: Alias sets for function 'test8':
133 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
134 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
135 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
136 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
137 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
138 define void @test8(i1 %cond_a, i1 %cond_b) {
139 entry:
140   %a = alloca i8, align 1
141   %b = alloca i8, align 1
142   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
143   %0 = load i8, i8* %a
144   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
145   %1 = load i8, i8* %b
146   ret void
149 ; CHECK: Alias sets for function 'test9':
150 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
151 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
152 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
153 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
154 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
155 define void @test9(i1 %cond_a, i1 %cond_b) {
156 entry:
157   %a = alloca i8, align 1
158   %b = alloca i8, align 1
159   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
160   %0 = load i8, i8* %a
161   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
162   store i8 1, i8* %b
163   ret void
166 ; CHECK: Alias sets for function 'test10':
167 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
168 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
169 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
170 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
171 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
172 define void @test10(i1 %cond_a, i1 %cond_b) {
173 entry:
174   %a = alloca i8, align 1
175   %b = alloca i8, align 1
176   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
177   store i8 0, i8* %a
178   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
179   %0 = load i8, i8* %b
180   ret void
183 ; CHECK: Alias sets for function 'test11':
184 ; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
185 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
186 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
187 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
188 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
189 define void @test11(i1 %cond_a, i1 %cond_b) {
190 entry:
191   %a = alloca i8, align 1
192   %b = alloca i8, align 1
193   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
194   store i8 0, i8* %a
195   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
196   store i8 1, i8* %b
197   ret void
200 ; CHECK: Alias sets for function 'test12':
201 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
202 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
203 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
204 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
205 define void @test12(i8* %b, i1 %cond_b) {
206 entry:
207   %a = alloca i8, align 1
208   %0 = load i8, i8* %a
209   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
210   %1 = load i8, i8* %b
211   ret void
214 ; CHECK: Alias sets for function 'test13':
215 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
216 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
217 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
218 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
219 define void @test13(i8* %b, i1 %cond_b) {
220 entry:
221   %a = alloca i8, align 1
222   %0 = load i8, i8* %a
223   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
224   store i8 1, i8* %b
225   ret void
228 ; CHECK: Alias sets for function 'test14':
229 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
230 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
231 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
232 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
233 define void @test14(i8* %b, i1 %cond_b) {
234 entry:
235   %a = alloca i8, align 1
236   store i8 0, i8* %a
237   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
238   %0 = load i8, i8* %b
239   ret void
242 ; CHECK: Alias sets for function 'test15':
243 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
244 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
245 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
246 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
247 define void @test15(i8* %b, i1 %cond_b) {
248 entry:
249   %a = alloca i8, align 1
250   store i8 0, i8* %a
251   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
252   store i8 1, i8* %b
253   ret void
256 ; CHECK: Alias sets for function 'test16':
257 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
258 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
259 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
260 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
261 define void @test16(i1 %cond_a, i8* %b) {
262 entry:
263   %a = alloca i8, align 1
264   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
265   %0 = load i8, i8* %a
266   %1 = load i8, i8* %b
267   ret void
270 ; CHECK: Alias sets for function 'test17':
271 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
272 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
273 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
274 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
275 define void @test17(i1 %cond_a, i8* %b) {
276 entry:
277   %a = alloca i8, align 1
278   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
279   %0 = load i8, i8* %a
280   store i8 1, i8* %b
281   ret void
284 ; CHECK: Alias sets for function 'test18':
285 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
286 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
287 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
288 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
289 define void @test18(i1 %cond_a, i8* %b) {
290 entry:
291   %a = alloca i8, align 1
292   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
293   store i8 0, i8* %a
294   %0 = load i8, i8* %b
295   ret void
298 ; CHECK: Alias sets for function 'test19':
299 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
300 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
301 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
302 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
303 define void @test19(i1 %cond_a, i8* %b) {
304 entry:
305   %a = alloca i8, align 1
306   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
307   store i8 0, i8* %a
308   store i8 1, i8* %b
309   ret void
312 ; CHECK: Alias sets for function 'test20':
313 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
314 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
315 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
316 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
317 define void @test20(i1 %cond_a, i8* %b, i1 %cond_b) {
318 entry:
319   %a = alloca i8, align 1
320   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
321   %0 = load i8, i8* %a
322   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
323   %1 = load i8, i8* %b
324   ret void
327 ; CHECK: Alias sets for function 'test21':
328 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
329 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
330 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
331 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
332 define void @test21(i1 %cond_a, i8* %b, i1 %cond_b) {
333 entry:
334   %a = alloca i8, align 1
335   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
336   %0 = load i8, i8* %a
337   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
338   store i8 1, i8* %b
339   ret void
342 ; CHECK: Alias sets for function 'test22':
343 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
344 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
345 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
346 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
347 define void @test22(i1 %cond_a, i8* %b, i1 %cond_b) {
348 entry:
349   %a = alloca i8, align 1
350   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
351   store i8 0, i8* %a
352   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
353   %0 = load i8, i8* %b
354   ret void
357 ; CHECK: Alias sets for function 'test23':
358 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
359 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %b, LocationSize::precise(1))
360 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
361 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
362 define void @test23(i1 %cond_a, i8* %b, i1 %cond_b) {
363 entry:
364   %a = alloca i8, align 1
365   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
366   store i8 0, i8* %a
367   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
368   store i8 1, i8* %b
369   ret void
372 ; CHECK: Alias sets for function 'test24':
373 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
374 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
375 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
376 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
377 define void @test24(i8** %ptr_b, i1 %cond_b) {
378 entry:
379   %a = alloca i8, align 1
380   %b = load i8*, i8** %ptr_b
381   %0 = load i8, i8* %a
382   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
383   %1 = load i8, i8* %b
384   ret void
387 ; CHECK: Alias sets for function 'test25':
388 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
389 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
390 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
391 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
392 define void @test25(i8** %ptr_b, i1 %cond_b) {
393 entry:
394   %a = alloca i8, align 1
395   %b = load i8*, i8** %ptr_b
396   %0 = load i8, i8* %a
397   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
398   store i8 1, i8* %b
399   ret void
402 ; CHECK: Alias sets for function 'test26':
403 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
404 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
405 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
406 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
407 define void @test26(i8** %ptr_b, i1 %cond_b) {
408 entry:
409   %a = alloca i8, align 1
410   %b = load i8*, i8** %ptr_b
411   store i8 0, i8* %a
412   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
413   %0 = load i8, i8* %b
414   ret void
417 ; CHECK: Alias sets for function 'test27':
418 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
419 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
420 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
421 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
422 define void @test27(i8** %ptr_b, i1 %cond_b) {
423 entry:
424   %a = alloca i8, align 1
425   %b = load i8*, i8** %ptr_b
426   store i8 0, i8* %a
427   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
428   store i8 1, i8* %b
429   ret void
432 ; CHECK: Alias sets for function 'test28':
433 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
434 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
435 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
436 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
437 define void @test28(i1 %cond_a, i8** %ptr_b) {
438 entry:
439   %a = alloca i8, align 1
440   %b = load i8*, i8** %ptr_b
441   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
442   %0 = load i8, i8* %a
443   %1 = load i8, i8* %b
444   ret void
447 ; CHECK: Alias sets for function 'test29':
448 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
449 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
450 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
451 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
452 define void @test29(i1 %cond_a, i8** %ptr_b) {
453 entry:
454   %a = alloca i8, align 1
455   %b = load i8*, i8** %ptr_b
456   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
457   %0 = load i8, i8* %a
458   store i8 1, i8* %b
459   ret void
462 ; CHECK: Alias sets for function 'test30':
463 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
464 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
465 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
466 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
467 define void @test30(i1 %cond_a, i8** %ptr_b) {
468 entry:
469   %a = alloca i8, align 1
470   %b = load i8*, i8** %ptr_b
471   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
472   store i8 0, i8* %a
473   %0 = load i8, i8* %b
474   ret void
477 ; CHECK: Alias sets for function 'test31':
478 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
479 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
480 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
481 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
482 define void @test31(i1 %cond_a, i8** %ptr_b) {
483 entry:
484   %a = alloca i8, align 1
485   %b = load i8*, i8** %ptr_b
486   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
487   store i8 0, i8* %a
488   store i8 1, i8* %b
489   ret void
492 ; CHECK: Alias sets for function 'test32':
493 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
494 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
495 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
496 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
497 define void @test32(i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
498 entry:
499   %a = alloca i8, align 1
500   %b = load i8*, i8** %ptr_b
501   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
502   %0 = load i8, i8* %a
503   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
504   %1 = load i8, i8* %b
505   ret void
508 ; CHECK: Alias sets for function 'test33':
509 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
510 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
511 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
512 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
513 define void @test33(i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
514 entry:
515   %a = alloca i8, align 1
516   %b = load i8*, i8** %ptr_b
517   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
518   %0 = load i8, i8* %a
519   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
520   store i8 1, i8* %b
521   ret void
524 ; CHECK: Alias sets for function 'test34':
525 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
526 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
527 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
528 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
529 define void @test34(i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
530 entry:
531   %a = alloca i8, align 1
532   %b = load i8*, i8** %ptr_b
533   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
534   store i8 0, i8* %a
535   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
536   %0 = load i8, i8* %b
537   ret void
540 ; CHECK: Alias sets for function 'test35':
541 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
542 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %b, LocationSize::precise(1))
543 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
544 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %a, LocationSize::precise(1))
545 define void @test35(i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
546 entry:
547   %a = alloca i8, align 1
548   %b = load i8*, i8** %ptr_b
549   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
550   store i8 0, i8* %a
551   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
552   store i8 1, i8* %b
553   ret void
556 ; CHECK: Alias sets for function 'test36':
557 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
558 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
559 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
560 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
561 define void @test36(i8* %a, i1 %cond_b) {
562 entry:
563   %b = alloca i8, align 1
564   %0 = load i8, i8* %a
565   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
566   %1 = load i8, i8* %b
567   ret void
570 ; CHECK: Alias sets for function 'test37':
571 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
572 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
573 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
574 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
575 define void @test37(i8* %a, i1 %cond_b) {
576 entry:
577   %b = alloca i8, align 1
578   %0 = load i8, i8* %a
579   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
580   store i8 1, i8* %b
581   ret void
584 ; CHECK: Alias sets for function 'test38':
585 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
586 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
587 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
588 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
589 define void @test38(i8* %a, i1 %cond_b) {
590 entry:
591   %b = alloca i8, align 1
592   store i8 0, i8* %a
593   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
594   %0 = load i8, i8* %b
595   ret void
598 ; CHECK: Alias sets for function 'test39':
599 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
600 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
601 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
602 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
603 define void @test39(i8* %a, i1 %cond_b) {
604 entry:
605   %b = alloca i8, align 1
606   store i8 0, i8* %a
607   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
608   store i8 1, i8* %b
609   ret void
612 ; CHECK: Alias sets for function 'test40':
613 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
614 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
615 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
616 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
617 define void @test40(i8* %a, i1 %cond_a) {
618 entry:
619   %b = alloca i8, align 1
620   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
621   %0 = load i8, i8* %a
622   %1 = load i8, i8* %b
623   ret void
626 ; CHECK: Alias sets for function 'test41':
627 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
628 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
629 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
630 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
631 define void @test41(i8* %a, i1 %cond_a) {
632 entry:
633   %b = alloca i8, align 1
634   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
635   %0 = load i8, i8* %a
636   store i8 1, i8* %b
637   ret void
640 ; CHECK: Alias sets for function 'test42':
641 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
642 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
643 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
644 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
645 define void @test42(i8* %a, i1 %cond_a) {
646 entry:
647   %b = alloca i8, align 1
648   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
649   store i8 0, i8* %a
650   %0 = load i8, i8* %b
651   ret void
654 ; CHECK: Alias sets for function 'test43':
655 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
656 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
657 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
658 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
659 define void @test43(i8* %a, i1 %cond_a) {
660 entry:
661   %b = alloca i8, align 1
662   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
663   store i8 0, i8* %a
664   store i8 1, i8* %b
665   ret void
668 ; CHECK: Alias sets for function 'test44':
669 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
670 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
671 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
672 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
673 define void @test44(i8* %a, i1 %cond_a, i1 %cond_b) {
674 entry:
675   %b = alloca i8, align 1
676   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
677   %0 = load i8, i8* %a
678   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
679   %1 = load i8, i8* %b
680   ret void
683 ; CHECK: Alias sets for function 'test45':
684 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
685 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1))
686 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
687 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
688 define void @test45(i8* %a, i1 %cond_a, i1 %cond_b) {
689 entry:
690   %b = alloca i8, align 1
691   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
692   %0 = load i8, i8* %a
693   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
694   store i8 1, i8* %b
695   ret void
698 ; CHECK: Alias sets for function 'test46':
699 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
700 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
701 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
702 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
703 define void @test46(i8* %a, i1 %cond_a, i1 %cond_b) {
704 entry:
705   %b = alloca i8, align 1
706   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
707   store i8 0, i8* %a
708   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
709   %0 = load i8, i8* %b
710   ret void
713 ; CHECK: Alias sets for function 'test47':
714 ; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
715 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1))
716 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
717 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
718 define void @test47(i8* %a, i1 %cond_a, i1 %cond_b) {
719 entry:
720   %b = alloca i8, align 1
721   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
722   store i8 0, i8* %a
723   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
724   store i8 1, i8* %b
725   ret void
728 ; CHECK: Alias sets for function 'test48':
729 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
730 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
731 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
732 define void @test48(i8* %a, i8* %b, i1 %cond_b) {
733 entry:
734   %0 = load i8, i8* %a
735   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
736   %1 = load i8, i8* %b
737   ret void
740 ; CHECK: Alias sets for function 'test49':
741 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
742 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
743 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
744 define void @test49(i8* %a, i8* %b, i1 %cond_b) {
745 entry:
746   %0 = load i8, i8* %a
747   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
748   store i8 1, i8* %b
749   ret void
752 ; CHECK: Alias sets for function 'test50':
753 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
754 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
755 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
756 define void @test50(i8* %a, i8* %b, i1 %cond_b) {
757 entry:
758   store i8 0, i8* %a
759   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
760   %0 = load i8, i8* %b
761   ret void
764 ; CHECK: Alias sets for function 'test51':
765 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
766 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
767 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
768 define void @test51(i8* %a, i8* %b, i1 %cond_b) {
769 entry:
770   store i8 0, i8* %a
771   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
772   store i8 1, i8* %b
773   ret void
776 ; CHECK: Alias sets for function 'test52':
777 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
778 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
779 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
780 define void @test52(i8* %a, i1 %cond_a, i8* %b) {
781 entry:
782   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
783   %0 = load i8, i8* %a
784   %1 = load i8, i8* %b
785   ret void
788 ; CHECK: Alias sets for function 'test53':
789 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
790 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
791 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
792 define void @test53(i8* %a, i1 %cond_a, i8* %b) {
793 entry:
794   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
795   %0 = load i8, i8* %a
796   store i8 1, i8* %b
797   ret void
800 ; CHECK: Alias sets for function 'test54':
801 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
802 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
803 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
804 define void @test54(i8* %a, i1 %cond_a, i8* %b) {
805 entry:
806   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
807   store i8 0, i8* %a
808   %0 = load i8, i8* %b
809   ret void
812 ; CHECK: Alias sets for function 'test55':
813 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
814 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
815 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
816 define void @test55(i8* %a, i1 %cond_a, i8* %b) {
817 entry:
818   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
819   store i8 0, i8* %a
820   store i8 1, i8* %b
821   ret void
824 ; CHECK: Alias sets for function 'test56':
825 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
826 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
827 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
828 define void @test56(i8* %a, i1 %cond_a, i8* %b, i1 %cond_b) {
829 entry:
830   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
831   %0 = load i8, i8* %a
832   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
833   %1 = load i8, i8* %b
834   ret void
837 ; CHECK: Alias sets for function 'test57':
838 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
839 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
840 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
841 define void @test57(i8* %a, i1 %cond_a, i8* %b, i1 %cond_b) {
842 entry:
843   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
844   %0 = load i8, i8* %a
845   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
846   store i8 1, i8* %b
847   ret void
850 ; CHECK: Alias sets for function 'test58':
851 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
852 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
853 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
854 define void @test58(i8* %a, i1 %cond_a, i8* %b, i1 %cond_b) {
855 entry:
856   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
857   store i8 0, i8* %a
858   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
859   %0 = load i8, i8* %b
860   ret void
863 ; CHECK: Alias sets for function 'test59':
864 ; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
865 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
866 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
867 define void @test59(i8* %a, i1 %cond_a, i8* %b, i1 %cond_b) {
868 entry:
869   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
870   store i8 0, i8* %a
871   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
872   store i8 1, i8* %b
873   ret void
876 ; CHECK: Alias sets for function 'test60':
877 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
878 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
879 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
880 define void @test60(i8* %a, i8** %ptr_b, i1 %cond_b) {
881 entry:
882   %b = load i8*, i8** %ptr_b
883   %0 = load i8, i8* %a
884   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
885   %1 = load i8, i8* %b
886   ret void
889 ; CHECK: Alias sets for function 'test61':
890 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
891 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
892 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
893 define void @test61(i8* %a, i8** %ptr_b, i1 %cond_b) {
894 entry:
895   %b = load i8*, i8** %ptr_b
896   %0 = load i8, i8* %a
897   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
898   store i8 1, i8* %b
899   ret void
902 ; CHECK: Alias sets for function 'test62':
903 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
904 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
905 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
906 define void @test62(i8* %a, i8** %ptr_b, i1 %cond_b) {
907 entry:
908   %b = load i8*, i8** %ptr_b
909   store i8 0, i8* %a
910   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
911   %0 = load i8, i8* %b
912   ret void
915 ; CHECK: Alias sets for function 'test63':
916 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
917 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
918 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
919 define void @test63(i8* %a, i8** %ptr_b, i1 %cond_b) {
920 entry:
921   %b = load i8*, i8** %ptr_b
922   store i8 0, i8* %a
923   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
924   store i8 1, i8* %b
925   ret void
928 ; CHECK: Alias sets for function 'test64':
929 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
930 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
931 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
932 define void @test64(i8* %a, i1 %cond_a, i8** %ptr_b) {
933 entry:
934   %b = load i8*, i8** %ptr_b
935   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
936   %0 = load i8, i8* %a
937   %1 = load i8, i8* %b
938   ret void
941 ; CHECK: Alias sets for function 'test65':
942 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
943 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
944 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
945 define void @test65(i8* %a, i1 %cond_a, i8** %ptr_b) {
946 entry:
947   %b = load i8*, i8** %ptr_b
948   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
949   %0 = load i8, i8* %a
950   store i8 1, i8* %b
951   ret void
954 ; CHECK: Alias sets for function 'test66':
955 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
956 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
957 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
958 define void @test66(i8* %a, i1 %cond_a, i8** %ptr_b) {
959 entry:
960   %b = load i8*, i8** %ptr_b
961   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
962   store i8 0, i8* %a
963   %0 = load i8, i8* %b
964   ret void
967 ; CHECK: Alias sets for function 'test67':
968 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
969 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
970 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
971 define void @test67(i8* %a, i1 %cond_a, i8** %ptr_b) {
972 entry:
973   %b = load i8*, i8** %ptr_b
974   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
975   store i8 0, i8* %a
976   store i8 1, i8* %b
977   ret void
980 ; CHECK: Alias sets for function 'test68':
981 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
982 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
983 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
984 define void @test68(i8* %a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
985 entry:
986   %b = load i8*, i8** %ptr_b
987   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
988   %0 = load i8, i8* %a
989   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
990   %1 = load i8, i8* %b
991   ret void
994 ; CHECK: Alias sets for function 'test69':
995 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
996 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
997 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
998 define void @test69(i8* %a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
999 entry:
1000   %b = load i8*, i8** %ptr_b
1001   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1002   %0 = load i8, i8* %a
1003   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1004   store i8 1, i8* %b
1005   ret void
1008 ; CHECK: Alias sets for function 'test70':
1009 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1010 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1011 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1012 define void @test70(i8* %a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1013 entry:
1014   %b = load i8*, i8** %ptr_b
1015   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1016   store i8 0, i8* %a
1017   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1018   %0 = load i8, i8* %b
1019   ret void
1022 ; CHECK: Alias sets for function 'test71':
1023 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1024 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1025 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1026 define void @test71(i8* %a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1027 entry:
1028   %b = load i8*, i8** %ptr_b
1029   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1030   store i8 0, i8* %a
1031   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1032   store i8 1, i8* %b
1033   ret void
1036 ; CHECK: Alias sets for function 'test72':
1037 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1038 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1039 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1040 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1041 define void @test72(i8** %ptr_a, i1 %cond_b) {
1042 entry:
1043   %a = load i8*, i8** %ptr_a
1044   %b = alloca i8, align 1
1045   %0 = load i8, i8* %a
1046   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1047   %1 = load i8, i8* %b
1048   ret void
1051 ; CHECK: Alias sets for function 'test73':
1052 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1053 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1054 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1055 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1056 define void @test73(i8** %ptr_a, i1 %cond_b) {
1057 entry:
1058   %a = load i8*, i8** %ptr_a
1059   %b = alloca i8, align 1
1060   %0 = load i8, i8* %a
1061   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1062   store i8 1, i8* %b
1063   ret void
1066 ; CHECK: Alias sets for function 'test74':
1067 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1068 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1069 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1070 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1071 define void @test74(i8** %ptr_a, i1 %cond_b) {
1072 entry:
1073   %a = load i8*, i8** %ptr_a
1074   %b = alloca i8, align 1
1075   store i8 0, i8* %a
1076   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1077   %0 = load i8, i8* %b
1078   ret void
1081 ; CHECK: Alias sets for function 'test75':
1082 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1083 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1084 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1085 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1086 define void @test75(i8** %ptr_a, i1 %cond_b) {
1087 entry:
1088   %a = load i8*, i8** %ptr_a
1089   %b = alloca i8, align 1
1090   store i8 0, i8* %a
1091   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1092   store i8 1, i8* %b
1093   ret void
1096 ; CHECK: Alias sets for function 'test76':
1097 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1098 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1099 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1100 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1101 define void @test76(i8** %ptr_a, i1 %cond_a) {
1102 entry:
1103   %a = load i8*, i8** %ptr_a
1104   %b = alloca i8, align 1
1105   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1106   %0 = load i8, i8* %a
1107   %1 = load i8, i8* %b
1108   ret void
1111 ; CHECK: Alias sets for function 'test77':
1112 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1113 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1114 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1115 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1116 define void @test77(i8** %ptr_a, i1 %cond_a) {
1117 entry:
1118   %a = load i8*, i8** %ptr_a
1119   %b = alloca i8, align 1
1120   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1121   %0 = load i8, i8* %a
1122   store i8 1, i8* %b
1123   ret void
1126 ; CHECK: Alias sets for function 'test78':
1127 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1128 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1129 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1130 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1131 define void @test78(i8** %ptr_a, i1 %cond_a) {
1132 entry:
1133   %a = load i8*, i8** %ptr_a
1134   %b = alloca i8, align 1
1135   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1136   store i8 0, i8* %a
1137   %0 = load i8, i8* %b
1138   ret void
1141 ; CHECK: Alias sets for function 'test79':
1142 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1143 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1144 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1145 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1146 define void @test79(i8** %ptr_a, i1 %cond_a) {
1147 entry:
1148   %a = load i8*, i8** %ptr_a
1149   %b = alloca i8, align 1
1150   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1151   store i8 0, i8* %a
1152   store i8 1, i8* %b
1153   ret void
1156 ; CHECK: Alias sets for function 'test80':
1157 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1158 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1159 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1160 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1161 define void @test80(i8** %ptr_a, i1 %cond_a, i1 %cond_b) {
1162 entry:
1163   %a = load i8*, i8** %ptr_a
1164   %b = alloca i8, align 1
1165   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1166   %0 = load i8, i8* %a
1167   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1168   %1 = load i8, i8* %b
1169   ret void
1172 ; CHECK: Alias sets for function 'test81':
1173 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1174 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1175 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1176 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1177 define void @test81(i8** %ptr_a, i1 %cond_a, i1 %cond_b) {
1178 entry:
1179   %a = load i8*, i8** %ptr_a
1180   %b = alloca i8, align 1
1181   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1182   %0 = load i8, i8* %a
1183   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1184   store i8 1, i8* %b
1185   ret void
1188 ; CHECK: Alias sets for function 'test82':
1189 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1190 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1191 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1192 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Pointers: (i8* %b, LocationSize::precise(1))
1193 define void @test82(i8** %ptr_a, i1 %cond_a, i1 %cond_b) {
1194 entry:
1195   %a = load i8*, i8** %ptr_a
1196   %b = alloca i8, align 1
1197   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1198   store i8 0, i8* %a
1199   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1200   %0 = load i8, i8* %b
1201   ret void
1204 ; CHECK: Alias sets for function 'test83':
1205 ; CHECK: Alias Set Tracker: 2 alias sets for 3 pointer values.
1206 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1))
1207 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1208 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Pointers: (i8* %b, LocationSize::precise(1))
1209 define void @test83(i8** %ptr_a, i1 %cond_a, i1 %cond_b) {
1210 entry:
1211   %a = load i8*, i8** %ptr_a
1212   %b = alloca i8, align 1
1213   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1214   store i8 0, i8* %a
1215   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1216   store i8 1, i8* %b
1217   ret void
1220 ; CHECK: Alias sets for function 'test84':
1221 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1222 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1223 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1224 define void @test84(i8** %ptr_a, i8* %b, i1 %cond_b) {
1225 entry:
1226   %a = load i8*, i8** %ptr_a
1227   %0 = load i8, i8* %a
1228   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1229   %1 = load i8, i8* %b
1230   ret void
1233 ; CHECK: Alias sets for function 'test85':
1234 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1235 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1236 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1237 define void @test85(i8** %ptr_a, i8* %b, i1 %cond_b) {
1238 entry:
1239   %a = load i8*, i8** %ptr_a
1240   %0 = load i8, i8* %a
1241   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1242   store i8 1, i8* %b
1243   ret void
1246 ; CHECK: Alias sets for function 'test86':
1247 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1248 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1249 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1250 define void @test86(i8** %ptr_a, i8* %b, i1 %cond_b) {
1251 entry:
1252   %a = load i8*, i8** %ptr_a
1253   store i8 0, i8* %a
1254   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1255   %0 = load i8, i8* %b
1256   ret void
1259 ; CHECK: Alias sets for function 'test87':
1260 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1261 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1262 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1263 define void @test87(i8** %ptr_a, i8* %b, i1 %cond_b) {
1264 entry:
1265   %a = load i8*, i8** %ptr_a
1266   store i8 0, i8* %a
1267   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1268   store i8 1, i8* %b
1269   ret void
1272 ; CHECK: Alias sets for function 'test88':
1273 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1274 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1275 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1276 define void @test88(i8** %ptr_a, i1 %cond_a, i8* %b) {
1277 entry:
1278   %a = load i8*, i8** %ptr_a
1279   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1280   %0 = load i8, i8* %a
1281   %1 = load i8, i8* %b
1282   ret void
1285 ; CHECK: Alias sets for function 'test89':
1286 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1287 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1288 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1289 define void @test89(i8** %ptr_a, i1 %cond_a, i8* %b) {
1290 entry:
1291   %a = load i8*, i8** %ptr_a
1292   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1293   %0 = load i8, i8* %a
1294   store i8 1, i8* %b
1295   ret void
1298 ; CHECK: Alias sets for function 'test90':
1299 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1300 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1301 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1302 define void @test90(i8** %ptr_a, i1 %cond_a, i8* %b) {
1303 entry:
1304   %a = load i8*, i8** %ptr_a
1305   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1306   store i8 0, i8* %a
1307   %0 = load i8, i8* %b
1308   ret void
1311 ; CHECK: Alias sets for function 'test91':
1312 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1313 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1314 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1315 define void @test91(i8** %ptr_a, i1 %cond_a, i8* %b) {
1316 entry:
1317   %a = load i8*, i8** %ptr_a
1318   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1319   store i8 0, i8* %a
1320   store i8 1, i8* %b
1321   ret void
1324 ; CHECK: Alias sets for function 'test92':
1325 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1326 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1327 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1328 define void @test92(i8** %ptr_a, i1 %cond_a, i8* %b, i1 %cond_b) {
1329 entry:
1330   %a = load i8*, i8** %ptr_a
1331   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1332   %0 = load i8, i8* %a
1333   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1334   %1 = load i8, i8* %b
1335   ret void
1338 ; CHECK: Alias sets for function 'test93':
1339 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1340 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1341 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1342 define void @test93(i8** %ptr_a, i1 %cond_a, i8* %b, i1 %cond_b) {
1343 entry:
1344   %a = load i8*, i8** %ptr_a
1345   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1346   %0 = load i8, i8* %a
1347   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1348   store i8 1, i8* %b
1349   ret void
1352 ; CHECK: Alias sets for function 'test94':
1353 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1354 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1355 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1356 define void @test94(i8** %ptr_a, i1 %cond_a, i8* %b, i1 %cond_b) {
1357 entry:
1358   %a = load i8*, i8** %ptr_a
1359   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1360   store i8 0, i8* %a
1361   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1362   %0 = load i8, i8* %b
1363   ret void
1366 ; CHECK: Alias sets for function 'test95':
1367 ; CHECK: Alias Set Tracker: 1 alias sets for 3 pointer values.
1368 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 4] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1369 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1370 define void @test95(i8** %ptr_a, i1 %cond_a, i8* %b, i1 %cond_b) {
1371 entry:
1372   %a = load i8*, i8** %ptr_a
1373   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1374   store i8 0, i8* %a
1375   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1376   store i8 1, i8* %b
1377   ret void
1380 ; CHECK: Alias sets for function 'test96':
1381 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1382 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1383 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1384 define void @test96(i8** %ptr_a, i8** %ptr_b, i1 %cond_b) {
1385 entry:
1386   %a = load i8*, i8** %ptr_a
1387   %b = load i8*, i8** %ptr_b
1388   %0 = load i8, i8* %a
1389   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1390   %1 = load i8, i8* %b
1391   ret void
1394 ; CHECK: Alias sets for function 'test97':
1395 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1396 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1397 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1398 define void @test97(i8** %ptr_a, i8** %ptr_b, i1 %cond_b) {
1399 entry:
1400   %a = load i8*, i8** %ptr_a
1401   %b = load i8*, i8** %ptr_b
1402   %0 = load i8, i8* %a
1403   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1404   store i8 1, i8* %b
1405   ret void
1408 ; CHECK: Alias sets for function 'test98':
1409 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1410 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1411 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1412 define void @test98(i8** %ptr_a, i8** %ptr_b, i1 %cond_b) {
1413 entry:
1414   %a = load i8*, i8** %ptr_a
1415   %b = load i8*, i8** %ptr_b
1416   store i8 0, i8* %a
1417   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1418   %0 = load i8, i8* %b
1419   ret void
1422 ; CHECK: Alias sets for function 'test99':
1423 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1424 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1425 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1426 define void @test99(i8** %ptr_a, i8** %ptr_b, i1 %cond_b) {
1427 entry:
1428   %a = load i8*, i8** %ptr_a
1429   %b = load i8*, i8** %ptr_b
1430   store i8 0, i8* %a
1431   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1432   store i8 1, i8* %b
1433   ret void
1436 ; CHECK: Alias sets for function 'test100':
1437 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1438 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1439 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1440 define void @test100(i8** %ptr_a, i1 %cond_a, i8** %ptr_b) {
1441 entry:
1442   %a = load i8*, i8** %ptr_a
1443   %b = load i8*, i8** %ptr_b
1444   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1445   %0 = load i8, i8* %a
1446   %1 = load i8, i8* %b
1447   ret void
1450 ; CHECK: Alias sets for function 'test101':
1451 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1452 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1453 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1454 define void @test101(i8** %ptr_a, i1 %cond_a, i8** %ptr_b) {
1455 entry:
1456   %a = load i8*, i8** %ptr_a
1457   %b = load i8*, i8** %ptr_b
1458   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1459   %0 = load i8, i8* %a
1460   store i8 1, i8* %b
1461   ret void
1464 ; CHECK: Alias sets for function 'test102':
1465 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1466 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1467 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1468 define void @test102(i8** %ptr_a, i1 %cond_a, i8** %ptr_b) {
1469 entry:
1470   %a = load i8*, i8** %ptr_a
1471   %b = load i8*, i8** %ptr_b
1472   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1473   store i8 0, i8* %a
1474   %0 = load i8, i8* %b
1475   ret void
1478 ; CHECK: Alias sets for function 'test103':
1479 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1480 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1481 ; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1482 define void @test103(i8** %ptr_a, i1 %cond_a, i8** %ptr_b) {
1483 entry:
1484   %a = load i8*, i8** %ptr_a
1485   %b = load i8*, i8** %ptr_b
1486   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1487   store i8 0, i8* %a
1488   store i8 1, i8* %b
1489   ret void
1492 ; CHECK: Alias sets for function 'test104':
1493 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1494 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Ref       Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1495 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1496 define void @test104(i8** %ptr_a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1497 entry:
1498   %a = load i8*, i8** %ptr_a
1499   %b = load i8*, i8** %ptr_b
1500   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1501   %0 = load i8, i8* %a
1502   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1503   %1 = load i8, i8* %b
1504   ret void
1507 ; CHECK: Alias sets for function 'test105':
1508 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1509 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1510 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1511 define void @test105(i8** %ptr_a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1512 entry:
1513   %a = load i8*, i8** %ptr_a
1514   %b = load i8*, i8** %ptr_b
1515   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1516   %0 = load i8, i8* %a
1517   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1518   store i8 1, i8* %b
1519   ret void
1522 ; CHECK: Alias sets for function 'test106':
1523 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1524 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1525 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1526 define void @test106(i8** %ptr_a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1527 entry:
1528   %a = load i8*, i8** %ptr_a
1529   %b = load i8*, i8** %ptr_b
1530   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1531   store i8 0, i8* %a
1532   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1533   %0 = load i8, i8* %b
1534   ret void
1537 ; CHECK: Alias sets for function 'test107':
1538 ; CHECK: Alias Set Tracker: 1 alias sets for 4 pointer values.
1539 ; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 5] may alias, Mod/Ref   Pointers: (i8** %ptr_a, LocationSize::precise(8)), (i8** %ptr_b, LocationSize::precise(8)), (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
1540 ; CHECK:     2 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ],   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1541 define void @test107(i8** %ptr_a, i1 %cond_a, i8** %ptr_b, i1 %cond_b) {
1542 entry:
1543   %a = load i8*, i8** %ptr_a
1544   %b = load i8*, i8** %ptr_b
1545   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1546   store i8 0, i8* %a
1547   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1548   store i8 1, i8* %b
1549   ret void