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