xref: /llvm-project/llvm/test/Analysis/AliasSet/guards.ll (revision 656bf13004d62b8f8360d8d496bb1e6e08407c22)
1; RUN: opt -aa-pipeline=basic-aa -passes=print-alias-sets -S -o - < %s 2>&1 | FileCheck %s
2declare void @llvm.experimental.guard(i1, ...)
3
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
10define void @test0(i1 %cond_b) {
11entry:
12  %a = alloca i8, align 1
13  %b = alloca i8, align 1
14  %0 = load i8, ptr %a
15  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
16  %1 = load i8, ptr %b
17  ret void
18}
19
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
26define void @test1(i1 %cond_b) {
27entry:
28  %a = alloca i8, align 1
29  %b = alloca i8, align 1
30  %0 = load i8, ptr %a
31  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
32  store i8 1, ptr %b
33  ret void
34}
35
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
42define void @test2(i1 %cond_b) {
43entry:
44  %a = alloca i8, align 1
45  %b = alloca i8, align 1
46  store i8 0, ptr %a
47  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
48  %0 = load i8, ptr %b
49  ret void
50}
51
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
58define void @test3(i1 %cond_b) {
59entry:
60  %a = alloca i8, align 1
61  %b = alloca i8, align 1
62  store i8 0, ptr %a
63  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
64  store i8 1, ptr %b
65  ret void
66}
67
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       Memory locations: (ptr %a, LocationSize::precise(1))
73; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
74define void @test4(i1 %cond_a) {
75entry:
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, ptr %a
80  %1 = load i8, ptr %b
81  ret void
82}
83
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       Memory locations: (ptr %a, LocationSize::precise(1))
89; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))
90define void @test5(i1 %cond_a) {
91entry:
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, ptr %a
96  store i8 1, ptr %b
97  ret void
98}
99
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       Memory locations: (ptr %a, LocationSize::precise(1))
105; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
106define void @test6(i1 %cond_a) {
107entry:
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, ptr %a
112  %0 = load i8, ptr %b
113  ret void
114}
115
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       Memory locations: (ptr %a, LocationSize::precise(1))
121; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))
122define void @test7(i1 %cond_a) {
123entry:
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, ptr %a
128  store i8 1, ptr %b
129  ret void
130}
131
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       Memory locations: (ptr %a, LocationSize::precise(1))
137; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
138define void @test8(i1 %cond_a, i1 %cond_b) {
139entry:
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, ptr %a
144  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
145  %1 = load i8, ptr %b
146  ret void
147}
148
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       Memory locations: (ptr %a, LocationSize::precise(1))
154; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))
155define void @test9(i1 %cond_a, i1 %cond_b) {
156entry:
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, ptr %a
161  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
162  store i8 1, ptr %b
163  ret void
164}
165
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       Memory locations: (ptr %a, LocationSize::precise(1))
171; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
172define void @test10(i1 %cond_a, i1 %cond_b) {
173entry:
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, ptr %a
178  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
179  %0 = load i8, ptr %b
180  ret void
181}
182
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       Memory locations: (ptr %a, LocationSize::precise(1))
188; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod       Memory locations: (ptr %b, LocationSize::precise(1))
189define void @test11(i1 %cond_a, i1 %cond_b) {
190entry:
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, ptr %a
195  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
196  store i8 1, ptr %b
197  ret void
198}
199
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       Memory locations: (ptr %a, LocationSize::precise(1))
203; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
204; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
205define void @test12(ptr %b, i1 %cond_b) {
206entry:
207  %a = alloca i8, align 1
208  %0 = load i8, ptr %a
209  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
210  %1 = load i8, ptr %b
211  ret void
212}
213
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       Memory locations: (ptr %a, LocationSize::precise(1))
217; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %b, LocationSize::precise(1))
218; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
219define void @test13(ptr %b, i1 %cond_b) {
220entry:
221  %a = alloca i8, align 1
222  %0 = load i8, ptr %a
223  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
224  store i8 1, ptr %b
225  ret void
226}
227
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       Memory locations: (ptr %a, LocationSize::precise(1))
231; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Ref       Memory locations: (ptr %b, LocationSize::precise(1))
232; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
233define void @test14(ptr %b, i1 %cond_b) {
234entry:
235  %a = alloca i8, align 1
236  store i8 0, ptr %a
237  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
238  %0 = load i8, ptr %b
239  ret void
240}
241
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       Memory locations: (ptr %a, LocationSize::precise(1))
245; CHECK:   AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref   Memory locations: (ptr %b, LocationSize::precise(1))
246; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
247define void @test15(ptr %b, i1 %cond_b) {
248entry:
249  %a = alloca i8, align 1
250  store i8 0, ptr %a
251  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
252  store i8 1, ptr %b
253  ret void
254}
255
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       Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
261define void @test16(i1 %cond_a, ptr %b) {
262entry:
263  %a = alloca i8, align 1
264  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
265  %0 = load i8, ptr %a
266  %1 = load i8, ptr %b
267  ret void
268}
269
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   Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
275define void @test17(i1 %cond_a, ptr %b) {
276entry:
277  %a = alloca i8, align 1
278  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
279  %0 = load i8, ptr %a
280  store i8 1, ptr %b
281  ret void
282}
283
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       Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
289define void @test18(i1 %cond_a, ptr %b) {
290entry:
291  %a = alloca i8, align 1
292  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
293  store i8 0, ptr %a
294  %0 = load i8, ptr %b
295  ret void
296}
297
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   Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
303define void @test19(i1 %cond_a, ptr %b) {
304entry:
305  %a = alloca i8, align 1
306  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
307  store i8 0, ptr %a
308  store i8 1, ptr %b
309  ret void
310}
311
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       Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
317define void @test20(i1 %cond_a, ptr %b, i1 %cond_b) {
318entry:
319  %a = alloca i8, align 1
320  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
321  %0 = load i8, ptr %a
322  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
323  %1 = load i8, ptr %b
324  ret void
325}
326
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   Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
332define void @test21(i1 %cond_a, ptr %b, i1 %cond_b) {
333entry:
334  %a = alloca i8, align 1
335  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
336  %0 = load i8, ptr %a
337  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
338  store i8 1, ptr %b
339  ret void
340}
341
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       Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
347define void @test22(i1 %cond_a, ptr %b, i1 %cond_b) {
348entry:
349  %a = alloca i8, align 1
350  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
351  store i8 0, ptr %a
352  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
353  %0 = load i8, ptr %b
354  ret void
355}
356
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   Memory locations: (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
362define void @test23(i1 %cond_a, ptr %b, i1 %cond_b) {
363entry:
364  %a = alloca i8, align 1
365  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
366  store i8 0, ptr %a
367  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
368  store i8 1, ptr %b
369  ret void
370}
371
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
377define void @test24(ptr %ptr_b, i1 %cond_b) {
378entry:
379  %a = alloca i8, align 1
380  %b = load ptr, ptr %ptr_b
381  %0 = load i8, ptr %a
382  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
383  %1 = load i8, ptr %b
384  ret void
385}
386
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
392define void @test25(ptr %ptr_b, i1 %cond_b) {
393entry:
394  %a = alloca i8, align 1
395  %b = load ptr, ptr %ptr_b
396  %0 = load i8, ptr %a
397  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
398  store i8 1, ptr %b
399  ret void
400}
401
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
407define void @test26(ptr %ptr_b, i1 %cond_b) {
408entry:
409  %a = alloca i8, align 1
410  %b = load ptr, ptr %ptr_b
411  store i8 0, ptr %a
412  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
413  %0 = load i8, ptr %b
414  ret void
415}
416
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
422define void @test27(ptr %ptr_b, i1 %cond_b) {
423entry:
424  %a = alloca i8, align 1
425  %b = load ptr, ptr %ptr_b
426  store i8 0, ptr %a
427  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
428  store i8 1, ptr %b
429  ret void
430}
431
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
437define void @test28(i1 %cond_a, ptr %ptr_b) {
438entry:
439  %a = alloca i8, align 1
440  %b = load ptr, ptr %ptr_b
441  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
442  %0 = load i8, ptr %a
443  %1 = load i8, ptr %b
444  ret void
445}
446
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
452define void @test29(i1 %cond_a, ptr %ptr_b) {
453entry:
454  %a = alloca i8, align 1
455  %b = load ptr, ptr %ptr_b
456  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
457  %0 = load i8, ptr %a
458  store i8 1, ptr %b
459  ret void
460}
461
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
467define void @test30(i1 %cond_a, ptr %ptr_b) {
468entry:
469  %a = alloca i8, align 1
470  %b = load ptr, ptr %ptr_b
471  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
472  store i8 0, ptr %a
473  %0 = load i8, ptr %b
474  ret void
475}
476
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
482define void @test31(i1 %cond_a, ptr %ptr_b) {
483entry:
484  %a = alloca i8, align 1
485  %b = load ptr, ptr %ptr_b
486  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
487  store i8 0, ptr %a
488  store i8 1, ptr %b
489  ret void
490}
491
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
497define void @test32(i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
498entry:
499  %a = alloca i8, align 1
500  %b = load ptr, ptr %ptr_b
501  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
502  %0 = load i8, ptr %a
503  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
504  %1 = load i8, ptr %b
505  ret void
506}
507
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
513define void @test33(i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
514entry:
515  %a = alloca i8, align 1
516  %b = load ptr, ptr %ptr_b
517  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
518  %0 = load i8, ptr %a
519  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
520  store i8 1, ptr %b
521  ret void
522}
523
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
529define void @test34(i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
530entry:
531  %a = alloca i8, align 1
532  %b = load ptr, ptr %ptr_b
533  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
534  store i8 0, ptr %a
535  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
536  %0 = load i8, ptr %b
537  ret void
538}
539
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %a, LocationSize::precise(1))
545define void @test35(i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
546entry:
547  %a = alloca i8, align 1
548  %b = load ptr, ptr %ptr_b
549  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
550  store i8 0, ptr %a
551  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
552  store i8 1, ptr %b
553  ret void
554}
555
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
561define void @test36(ptr %a, i1 %cond_b) {
562entry:
563  %b = alloca i8, align 1
564  %0 = load i8, ptr %a
565  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
566  %1 = load i8, ptr %b
567  ret void
568}
569
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
575define void @test37(ptr %a, i1 %cond_b) {
576entry:
577  %b = alloca i8, align 1
578  %0 = load i8, ptr %a
579  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
580  store i8 1, ptr %b
581  ret void
582}
583
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
589define void @test38(ptr %a, i1 %cond_b) {
590entry:
591  %b = alloca i8, align 1
592  store i8 0, ptr %a
593  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
594  %0 = load i8, ptr %b
595  ret void
596}
597
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
603define void @test39(ptr %a, i1 %cond_b) {
604entry:
605  %b = alloca i8, align 1
606  store i8 0, ptr %a
607  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
608  store i8 1, ptr %b
609  ret void
610}
611
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
617define void @test40(ptr %a, i1 %cond_a) {
618entry:
619  %b = alloca i8, align 1
620  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
621  %0 = load i8, ptr %a
622  %1 = load i8, ptr %b
623  ret void
624}
625
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
631define void @test41(ptr %a, i1 %cond_a) {
632entry:
633  %b = alloca i8, align 1
634  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
635  %0 = load i8, ptr %a
636  store i8 1, ptr %b
637  ret void
638}
639
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
645define void @test42(ptr %a, i1 %cond_a) {
646entry:
647  %b = alloca i8, align 1
648  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
649  store i8 0, ptr %a
650  %0 = load i8, ptr %b
651  ret void
652}
653
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
659define void @test43(ptr %a, i1 %cond_a) {
660entry:
661  %b = alloca i8, align 1
662  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
663  store i8 0, ptr %a
664  store i8 1, ptr %b
665  ret void
666}
667
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
673define void @test44(ptr %a, i1 %cond_a, i1 %cond_b) {
674entry:
675  %b = alloca i8, align 1
676  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
677  %0 = load i8, ptr %a
678  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
679  %1 = load i8, ptr %b
680  ret void
681}
682
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       Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
688define void @test45(ptr %a, i1 %cond_a, i1 %cond_b) {
689entry:
690  %b = alloca i8, align 1
691  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
692  %0 = load i8, ptr %a
693  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
694  store i8 1, ptr %b
695  ret void
696}
697
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
703define void @test46(ptr %a, i1 %cond_a, i1 %cond_b) {
704entry:
705  %b = alloca i8, align 1
706  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
707  store i8 0, ptr %a
708  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
709  %0 = load i8, ptr %b
710  ret void
711}
712
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   Memory locations: (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
718define void @test47(ptr %a, i1 %cond_a, i1 %cond_b) {
719entry:
720  %b = alloca i8, align 1
721  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
722  store i8 0, ptr %a
723  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
724  store i8 1, ptr %b
725  ret void
726}
727
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       Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
731; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
732define void @test48(ptr %a, ptr %b, i1 %cond_b) {
733entry:
734  %0 = load i8, ptr %a
735  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
736  %1 = load i8, ptr %b
737  ret void
738}
739
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
743; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
744define void @test49(ptr %a, ptr %b, i1 %cond_b) {
745entry:
746  %0 = load i8, ptr %a
747  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
748  store i8 1, ptr %b
749  ret void
750}
751
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
755; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
756define void @test50(ptr %a, ptr %b, i1 %cond_b) {
757entry:
758  store i8 0, ptr %a
759  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
760  %0 = load i8, ptr %b
761  ret void
762}
763
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
767; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
768define void @test51(ptr %a, ptr %b, i1 %cond_b) {
769entry:
770  store i8 0, ptr %a
771  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
772  store i8 1, ptr %b
773  ret void
774}
775
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       Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
779; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
780define void @test52(ptr %a, i1 %cond_a, ptr %b) {
781entry:
782  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
783  %0 = load i8, ptr %a
784  %1 = load i8, ptr %b
785  ret void
786}
787
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
791; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
792define void @test53(ptr %a, i1 %cond_a, ptr %b) {
793entry:
794  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
795  %0 = load i8, ptr %a
796  store i8 1, ptr %b
797  ret void
798}
799
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
803; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
804define void @test54(ptr %a, i1 %cond_a, ptr %b) {
805entry:
806  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
807  store i8 0, ptr %a
808  %0 = load i8, ptr %b
809  ret void
810}
811
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
815; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
816define void @test55(ptr %a, i1 %cond_a, ptr %b) {
817entry:
818  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
819  store i8 0, ptr %a
820  store i8 1, ptr %b
821  ret void
822}
823
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       Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
828define void @test56(ptr %a, i1 %cond_a, ptr %b, i1 %cond_b) {
829entry:
830  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
831  %0 = load i8, ptr %a
832  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
833  %1 = load i8, ptr %b
834  ret void
835}
836
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
841define void @test57(ptr %a, i1 %cond_a, ptr %b, i1 %cond_b) {
842entry:
843  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
844  %0 = load i8, ptr %a
845  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
846  store i8 1, ptr %b
847  ret void
848}
849
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
854define void @test58(ptr %a, i1 %cond_a, ptr %b, i1 %cond_b) {
855entry:
856  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
857  store i8 0, ptr %a
858  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
859  %0 = load i8, ptr %b
860  ret void
861}
862
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   Memory locations: (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
867define void @test59(ptr %a, i1 %cond_a, ptr %b, i1 %cond_b) {
868entry:
869  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
870  store i8 0, ptr %a
871  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
872  store i8 1, ptr %b
873  ret void
874}
875
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
879; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
880define void @test60(ptr %a, ptr %ptr_b, i1 %cond_b) {
881entry:
882  %b = load ptr, ptr %ptr_b
883  %0 = load i8, ptr %a
884  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
885  %1 = load i8, ptr %b
886  ret void
887}
888
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
892; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
893define void @test61(ptr %a, ptr %ptr_b, i1 %cond_b) {
894entry:
895  %b = load ptr, ptr %ptr_b
896  %0 = load i8, ptr %a
897  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
898  store i8 1, ptr %b
899  ret void
900}
901
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
905; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
906define void @test62(ptr %a, ptr %ptr_b, i1 %cond_b) {
907entry:
908  %b = load ptr, ptr %ptr_b
909  store i8 0, ptr %a
910  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
911  %0 = load i8, ptr %b
912  ret void
913}
914
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
918; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
919define void @test63(ptr %a, ptr %ptr_b, i1 %cond_b) {
920entry:
921  %b = load ptr, ptr %ptr_b
922  store i8 0, ptr %a
923  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
924  store i8 1, ptr %b
925  ret void
926}
927
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
931; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
932define void @test64(ptr %a, i1 %cond_a, ptr %ptr_b) {
933entry:
934  %b = load ptr, ptr %ptr_b
935  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
936  %0 = load i8, ptr %a
937  %1 = load i8, ptr %b
938  ret void
939}
940
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
944; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
945define void @test65(ptr %a, i1 %cond_a, ptr %ptr_b) {
946entry:
947  %b = load ptr, ptr %ptr_b
948  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
949  %0 = load i8, ptr %a
950  store i8 1, ptr %b
951  ret void
952}
953
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
957; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
958define void @test66(ptr %a, i1 %cond_a, ptr %ptr_b) {
959entry:
960  %b = load ptr, ptr %ptr_b
961  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
962  store i8 0, ptr %a
963  %0 = load i8, ptr %b
964  ret void
965}
966
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
970; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
971define void @test67(ptr %a, i1 %cond_a, ptr %ptr_b) {
972entry:
973  %b = load ptr, ptr %ptr_b
974  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
975  store i8 0, ptr %a
976  store i8 1, ptr %b
977  ret void
978}
979
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       Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
984define void @test68(ptr %a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
985entry:
986  %b = load ptr, ptr %ptr_b
987  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
988  %0 = load i8, ptr %a
989  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
990  %1 = load i8, ptr %b
991  ret void
992}
993
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
998define void @test69(ptr %a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
999entry:
1000  %b = load ptr, ptr %ptr_b
1001  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1002  %0 = load i8, ptr %a
1003  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1004  store i8 1, ptr %b
1005  ret void
1006}
1007
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1012define void @test70(ptr %a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1013entry:
1014  %b = load ptr, ptr %ptr_b
1015  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1016  store i8 0, ptr %a
1017  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1018  %0 = load i8, ptr %b
1019  ret void
1020}
1021
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   Memory locations: (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1026define void @test71(ptr %a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1027entry:
1028  %b = load ptr, ptr %ptr_b
1029  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1030  store i8 0, ptr %a
1031  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1032  store i8 1, ptr %b
1033  ret void
1034}
1035
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1041define void @test72(ptr %ptr_a, i1 %cond_b) {
1042entry:
1043  %a = load ptr, ptr %ptr_a
1044  %b = alloca i8, align 1
1045  %0 = load i8, ptr %a
1046  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1047  %1 = load i8, ptr %b
1048  ret void
1049}
1050
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1056define void @test73(ptr %ptr_a, i1 %cond_b) {
1057entry:
1058  %a = load ptr, ptr %ptr_a
1059  %b = alloca i8, align 1
1060  %0 = load i8, ptr %a
1061  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1062  store i8 1, ptr %b
1063  ret void
1064}
1065
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1071define void @test74(ptr %ptr_a, i1 %cond_b) {
1072entry:
1073  %a = load ptr, ptr %ptr_a
1074  %b = alloca i8, align 1
1075  store i8 0, ptr %a
1076  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1077  %0 = load i8, ptr %b
1078  ret void
1079}
1080
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1086define void @test75(ptr %ptr_a, i1 %cond_b) {
1087entry:
1088  %a = load ptr, ptr %ptr_a
1089  %b = alloca i8, align 1
1090  store i8 0, ptr %a
1091  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1092  store i8 1, ptr %b
1093  ret void
1094}
1095
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1101define void @test76(ptr %ptr_a, i1 %cond_a) {
1102entry:
1103  %a = load ptr, ptr %ptr_a
1104  %b = alloca i8, align 1
1105  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1106  %0 = load i8, ptr %a
1107  %1 = load i8, ptr %b
1108  ret void
1109}
1110
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1116define void @test77(ptr %ptr_a, i1 %cond_a) {
1117entry:
1118  %a = load ptr, ptr %ptr_a
1119  %b = alloca i8, align 1
1120  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1121  %0 = load i8, ptr %a
1122  store i8 1, ptr %b
1123  ret void
1124}
1125
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1131define void @test78(ptr %ptr_a, i1 %cond_a) {
1132entry:
1133  %a = load ptr, ptr %ptr_a
1134  %b = alloca i8, align 1
1135  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1136  store i8 0, ptr %a
1137  %0 = load i8, ptr %b
1138  ret void
1139}
1140
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1146define void @test79(ptr %ptr_a, i1 %cond_a) {
1147entry:
1148  %a = load ptr, ptr %ptr_a
1149  %b = alloca i8, align 1
1150  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1151  store i8 0, ptr %a
1152  store i8 1, ptr %b
1153  ret void
1154}
1155
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1161define void @test80(ptr %ptr_a, i1 %cond_a, i1 %cond_b) {
1162entry:
1163  %a = load ptr, ptr %ptr_a
1164  %b = alloca i8, align 1
1165  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1166  %0 = load i8, ptr %a
1167  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1168  %1 = load i8, ptr %b
1169  ret void
1170}
1171
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1177define void @test81(ptr %ptr_a, i1 %cond_a, i1 %cond_b) {
1178entry:
1179  %a = load ptr, ptr %ptr_a
1180  %b = alloca i8, align 1
1181  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1182  %0 = load i8, ptr %a
1183  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1184  store i8 1, ptr %b
1185  ret void
1186}
1187
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1193define void @test82(ptr %ptr_a, i1 %cond_a, i1 %cond_b) {
1194entry:
1195  %a = load ptr, ptr %ptr_a
1196  %b = alloca i8, align 1
1197  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1198  store i8 0, ptr %a
1199  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1200  %0 = load i8, ptr %b
1201  ret void
1202}
1203
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %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       Memory locations: (ptr %b, LocationSize::precise(1))
1209define void @test83(ptr %ptr_a, i1 %cond_a, i1 %cond_b) {
1210entry:
1211  %a = load ptr, ptr %ptr_a
1212  %b = alloca i8, align 1
1213  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1214  store i8 0, ptr %a
1215  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1216  store i8 1, ptr %b
1217  ret void
1218}
1219
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1223; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1224define void @test84(ptr %ptr_a, ptr %b, i1 %cond_b) {
1225entry:
1226  %a = load ptr, ptr %ptr_a
1227  %0 = load i8, ptr %a
1228  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1229  %1 = load i8, ptr %b
1230  ret void
1231}
1232
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1236; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1237define void @test85(ptr %ptr_a, ptr %b, i1 %cond_b) {
1238entry:
1239  %a = load ptr, ptr %ptr_a
1240  %0 = load i8, ptr %a
1241  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1242  store i8 1, ptr %b
1243  ret void
1244}
1245
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1249; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1250define void @test86(ptr %ptr_a, ptr %b, i1 %cond_b) {
1251entry:
1252  %a = load ptr, ptr %ptr_a
1253  store i8 0, ptr %a
1254  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1255  %0 = load i8, ptr %b
1256  ret void
1257}
1258
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1262; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1263define void @test87(ptr %ptr_a, ptr %b, i1 %cond_b) {
1264entry:
1265  %a = load ptr, ptr %ptr_a
1266  store i8 0, ptr %a
1267  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1268  store i8 1, ptr %b
1269  ret void
1270}
1271
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1275; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1276define void @test88(ptr %ptr_a, i1 %cond_a, ptr %b) {
1277entry:
1278  %a = load ptr, ptr %ptr_a
1279  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1280  %0 = load i8, ptr %a
1281  %1 = load i8, ptr %b
1282  ret void
1283}
1284
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1288; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1289define void @test89(ptr %ptr_a, i1 %cond_a, ptr %b) {
1290entry:
1291  %a = load ptr, ptr %ptr_a
1292  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1293  %0 = load i8, ptr %a
1294  store i8 1, ptr %b
1295  ret void
1296}
1297
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1301; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1302define void @test90(ptr %ptr_a, i1 %cond_a, ptr %b) {
1303entry:
1304  %a = load ptr, ptr %ptr_a
1305  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1306  store i8 0, ptr %a
1307  %0 = load i8, ptr %b
1308  ret void
1309}
1310
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1314; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1315define void @test91(ptr %ptr_a, i1 %cond_a, ptr %b) {
1316entry:
1317  %a = load ptr, ptr %ptr_a
1318  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1319  store i8 0, ptr %a
1320  store i8 1, ptr %b
1321  ret void
1322}
1323
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1328define void @test92(ptr %ptr_a, i1 %cond_a, ptr %b, i1 %cond_b) {
1329entry:
1330  %a = load ptr, ptr %ptr_a
1331  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1332  %0 = load i8, ptr %a
1333  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1334  %1 = load i8, ptr %b
1335  ret void
1336}
1337
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1342define void @test93(ptr %ptr_a, i1 %cond_a, ptr %b, i1 %cond_b) {
1343entry:
1344  %a = load ptr, ptr %ptr_a
1345  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1346  %0 = load i8, ptr %a
1347  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1348  store i8 1, ptr %b
1349  ret void
1350}
1351
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1356define void @test94(ptr %ptr_a, i1 %cond_a, ptr %b, i1 %cond_b) {
1357entry:
1358  %a = load ptr, ptr %ptr_a
1359  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1360  store i8 0, ptr %a
1361  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1362  %0 = load i8, ptr %b
1363  ret void
1364}
1365
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1370define void @test95(ptr %ptr_a, i1 %cond_a, ptr %b, i1 %cond_b) {
1371entry:
1372  %a = load ptr, ptr %ptr_a
1373  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1374  store i8 0, ptr %a
1375  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1376  store i8 1, ptr %b
1377  ret void
1378}
1379
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1383; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1384define void @test96(ptr %ptr_a, ptr %ptr_b, i1 %cond_b) {
1385entry:
1386  %a = load ptr, ptr %ptr_a
1387  %b = load ptr, ptr %ptr_b
1388  %0 = load i8, ptr %a
1389  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1390  %1 = load i8, ptr %b
1391  ret void
1392}
1393
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1397; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1398define void @test97(ptr %ptr_a, ptr %ptr_b, i1 %cond_b) {
1399entry:
1400  %a = load ptr, ptr %ptr_a
1401  %b = load ptr, ptr %ptr_b
1402  %0 = load i8, ptr %a
1403  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1404  store i8 1, ptr %b
1405  ret void
1406}
1407
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1411; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1412define void @test98(ptr %ptr_a, ptr %ptr_b, i1 %cond_b) {
1413entry:
1414  %a = load ptr, ptr %ptr_a
1415  %b = load ptr, ptr %ptr_b
1416  store i8 0, ptr %a
1417  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1418  %0 = load i8, ptr %b
1419  ret void
1420}
1421
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1425; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1426define void @test99(ptr %ptr_a, ptr %ptr_b, i1 %cond_b) {
1427entry:
1428  %a = load ptr, ptr %ptr_a
1429  %b = load ptr, ptr %ptr_b
1430  store i8 0, ptr %a
1431  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1432  store i8 1, ptr %b
1433  ret void
1434}
1435
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1439; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1440define void @test100(ptr %ptr_a, i1 %cond_a, ptr %ptr_b) {
1441entry:
1442  %a = load ptr, ptr %ptr_a
1443  %b = load ptr, ptr %ptr_b
1444  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1445  %0 = load i8, ptr %a
1446  %1 = load i8, ptr %b
1447  ret void
1448}
1449
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1453; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1454define void @test101(ptr %ptr_a, i1 %cond_a, ptr %ptr_b) {
1455entry:
1456  %a = load ptr, ptr %ptr_a
1457  %b = load ptr, ptr %ptr_b
1458  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1459  %0 = load i8, ptr %a
1460  store i8 1, ptr %b
1461  ret void
1462}
1463
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1467; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1468define void @test102(ptr %ptr_a, i1 %cond_a, ptr %ptr_b) {
1469entry:
1470  %a = load ptr, ptr %ptr_a
1471  %b = load ptr, ptr %ptr_b
1472  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1473  store i8 0, ptr %a
1474  %0 = load i8, ptr %b
1475  ret void
1476}
1477
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %b, LocationSize::precise(1))
1481; CHECK:     1 Unknown instructions:   call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1482define void @test103(ptr %ptr_a, i1 %cond_a, ptr %ptr_b) {
1483entry:
1484  %a = load ptr, ptr %ptr_a
1485  %b = load ptr, ptr %ptr_b
1486  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1487  store i8 0, ptr %a
1488  store i8 1, ptr %b
1489  ret void
1490}
1491
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       Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1496define void @test104(ptr %ptr_a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1497entry:
1498  %a = load ptr, ptr %ptr_a
1499  %b = load ptr, ptr %ptr_b
1500  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1501  %0 = load i8, ptr %a
1502  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1503  %1 = load i8, ptr %b
1504  ret void
1505}
1506
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1511define void @test105(ptr %ptr_a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1512entry:
1513  %a = load ptr, ptr %ptr_a
1514  %b = load ptr, ptr %ptr_b
1515  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1516  %0 = load i8, ptr %a
1517  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1518  store i8 1, ptr %b
1519  ret void
1520}
1521
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1526define void @test106(ptr %ptr_a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1527entry:
1528  %a = load ptr, ptr %ptr_a
1529  %b = load ptr, ptr %ptr_b
1530  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1531  store i8 0, ptr %a
1532  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1533  %0 = load i8, ptr %b
1534  ret void
1535}
1536
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   Memory locations: (ptr %ptr_a, LocationSize::precise(8)), (ptr %ptr_b, LocationSize::precise(8)), (ptr %a, LocationSize::precise(1)), (ptr %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"() ]
1541define void @test107(ptr %ptr_a, i1 %cond_a, ptr %ptr_b, i1 %cond_b) {
1542entry:
1543  %a = load ptr, ptr %ptr_a
1544  %b = load ptr, ptr %ptr_b
1545  call void (i1, ...) @llvm.experimental.guard(i1 %cond_a) [ "deopt"() ]
1546  store i8 0, ptr %a
1547  call void (i1, ...) @llvm.experimental.guard(i1 %cond_b) [ "deopt"() ]
1548  store i8 1, ptr %b
1549  ret void
1550}
1551