19df71899SFangrui Song // RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -triple aarch64 %s -o - | FileCheck %s
2d77cba6dSVictor Campos
3d77cba6dSVictor Campos struct S0 {
4d77cba6dSVictor Campos unsigned int x : 16;
5d77cba6dSVictor Campos unsigned int y : 16;
6d77cba6dSVictor Campos };
7d77cba6dSVictor Campos
8d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS0v
9d77cba6dSVictor Campos // CHECK: alloca %struct.S0, align 4
10d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S0, align 4
11*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S0_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
12*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S0_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 16, 16),
13d77cba6dSVictor Campos //
fS0()14d77cba6dSVictor Campos void fS0() {
15d77cba6dSVictor Campos S0 s0;
16d77cba6dSVictor Campos auto [a, b] = s0;
17d77cba6dSVictor Campos }
18d77cba6dSVictor Campos
19d77cba6dSVictor Campos struct S1 {
20d77cba6dSVictor Campos volatile unsigned int x : 16;
21d77cba6dSVictor Campos volatile unsigned int y : 16;
22d77cba6dSVictor Campos };
23d77cba6dSVictor Campos
24d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS1v
25d77cba6dSVictor Campos // CHECK: alloca %struct.S1, align 4
26d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S1, align 4
27*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S1_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
28*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S1_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 16, 16),
29d77cba6dSVictor Campos //
fS1()30d77cba6dSVictor Campos void fS1() {
31d77cba6dSVictor Campos S1 s1;
32d77cba6dSVictor Campos auto [a, b] = s1;
33d77cba6dSVictor Campos }
34d77cba6dSVictor Campos
35d77cba6dSVictor Campos struct S2 {
36d77cba6dSVictor Campos unsigned int x : 8;
37d77cba6dSVictor Campos unsigned int y : 8;
38d77cba6dSVictor Campos };
39d77cba6dSVictor Campos
40d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS2v
41d77cba6dSVictor Campos // CHECK: alloca %struct.S2, align 4
42d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S2, align 4
43*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S2_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 8),
44*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S2_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 8, 8),
45d77cba6dSVictor Campos //
fS2()46d77cba6dSVictor Campos void fS2() {
47d77cba6dSVictor Campos S2 s2;
48d77cba6dSVictor Campos auto [a, b] = s2;
49d77cba6dSVictor Campos }
50d77cba6dSVictor Campos
51d77cba6dSVictor Campos struct S3 {
52d77cba6dSVictor Campos volatile unsigned int x : 8;
53d77cba6dSVictor Campos volatile unsigned int y : 8;
54d77cba6dSVictor Campos };
55d77cba6dSVictor Campos
56d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS3v
57d77cba6dSVictor Campos // CHECK: alloca %struct.S3, align 4
58d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S3, align 4
59*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S3_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 8),
60*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S3_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 8, 8),
61d77cba6dSVictor Campos //
fS3()62d77cba6dSVictor Campos void fS3() {
63d77cba6dSVictor Campos S3 s3;
64d77cba6dSVictor Campos auto [a, b] = s3;
65d77cba6dSVictor Campos }
66d77cba6dSVictor Campos
67d77cba6dSVictor Campos struct S4 {
68d77cba6dSVictor Campos unsigned int x : 8;
69d77cba6dSVictor Campos unsigned int y : 16;
70d77cba6dSVictor Campos };
71d77cba6dSVictor Campos
72d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS4v
73d77cba6dSVictor Campos // CHECK: alloca %struct.S4, align 4
74d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S4, align 4
75*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S4_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 8),
76*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S4_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 8, 16),
77d77cba6dSVictor Campos //
fS4()78d77cba6dSVictor Campos void fS4() {
79d77cba6dSVictor Campos S4 s4;
80d77cba6dSVictor Campos auto [a, b] = s4;
81d77cba6dSVictor Campos }
82d77cba6dSVictor Campos
83d77cba6dSVictor Campos struct S5 {
84d77cba6dSVictor Campos volatile unsigned int x : 8;
85d77cba6dSVictor Campos volatile unsigned int y : 16;
86d77cba6dSVictor Campos };
87d77cba6dSVictor Campos
88d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS5v
89d77cba6dSVictor Campos // CHECK: alloca %struct.S5, align 4
90d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S5, align 4
91*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S5_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 8),
92*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S5_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 8, 16),
93d77cba6dSVictor Campos //
fS5()94d77cba6dSVictor Campos void fS5() {
95d77cba6dSVictor Campos S5 s5;
96d77cba6dSVictor Campos auto [a, b] = s5;
97d77cba6dSVictor Campos }
98d77cba6dSVictor Campos
99d77cba6dSVictor Campos struct S6 {
100d77cba6dSVictor Campos unsigned int x : 16;
101d77cba6dSVictor Campos unsigned int y : 8;
102d77cba6dSVictor Campos };
103d77cba6dSVictor Campos
104d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS6v
105d77cba6dSVictor Campos // CHECK: alloca %struct.S6, align 4
106d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S6, align 4
107*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S6_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
108*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S6_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 16, 8),
109d77cba6dSVictor Campos //
fS6()110d77cba6dSVictor Campos void fS6() {
111d77cba6dSVictor Campos S6 s6;
112d77cba6dSVictor Campos auto [a, b] = s6;
113d77cba6dSVictor Campos }
114d77cba6dSVictor Campos
115d77cba6dSVictor Campos struct S7 {
116d77cba6dSVictor Campos volatile unsigned int x : 16;
117d77cba6dSVictor Campos volatile unsigned int y : 8;
118d77cba6dSVictor Campos };
119d77cba6dSVictor Campos
120d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS7v
121d77cba6dSVictor Campos // CHECK: alloca %struct.S7, align 4
122d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S7, align 4
123*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S7_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
124*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S7_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 16, 8),
125d77cba6dSVictor Campos //
fS7()126d77cba6dSVictor Campos void fS7() {
127d77cba6dSVictor Campos S7 s7;
128d77cba6dSVictor Campos auto [a, b] = s7;
129d77cba6dSVictor Campos }
130d77cba6dSVictor Campos
131d77cba6dSVictor Campos struct S8 {
132d77cba6dSVictor Campos unsigned int x : 16;
133d77cba6dSVictor Campos volatile unsigned int y : 16;
134d77cba6dSVictor Campos };
135d77cba6dSVictor Campos
136d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS8v
137d77cba6dSVictor Campos // CHECK: alloca %struct.S8, align 4
138d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S8, align 4
139*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S8_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
140*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S8_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 16, 16),
141d77cba6dSVictor Campos //
fS8()142d77cba6dSVictor Campos void fS8() {
143d77cba6dSVictor Campos S8 s8;
144d77cba6dSVictor Campos auto [a, b] = s8;
145d77cba6dSVictor Campos }
146d77cba6dSVictor Campos
147d77cba6dSVictor Campos struct S9 {
148d77cba6dSVictor Campos unsigned int x : 16;
149d77cba6dSVictor Campos unsigned int y : 32;
150d77cba6dSVictor Campos };
151d77cba6dSVictor Campos
152d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z3fS9v
153d77cba6dSVictor Campos // CHECK: alloca %struct.S9, align 4
154d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S9, align 4
155*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S9_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
156*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S9_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 32, 32),
157d77cba6dSVictor Campos //
fS9()158d77cba6dSVictor Campos void fS9() {
159d77cba6dSVictor Campos S9 s9;
160d77cba6dSVictor Campos auto [a, b] = s9;
161d77cba6dSVictor Campos }
162d77cba6dSVictor Campos
163d77cba6dSVictor Campos struct S10 {
164d77cba6dSVictor Campos const unsigned int x : 8;
165d77cba6dSVictor Campos const volatile unsigned int y : 8;
166d77cba6dSVictor Campos
167d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z4fS10v
168d77cba6dSVictor Campos // CHECK: alloca %struct.S10, align 4
169d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S10, align 4
170*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S10_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 8),
171*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S10_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 8, 8),
172d77cba6dSVictor Campos //
S10S10173d77cba6dSVictor Campos S10() : x(0), y(0) {}
174d77cba6dSVictor Campos };
175d77cba6dSVictor Campos
fS10()176d77cba6dSVictor Campos void fS10() {
177d77cba6dSVictor Campos S10 s10;
178d77cba6dSVictor Campos auto [a, b] = s10;
179d77cba6dSVictor Campos }
180d77cba6dSVictor Campos
181d77cba6dSVictor Campos struct S11 {
182d77cba6dSVictor Campos unsigned int x : 15;
183d77cba6dSVictor Campos unsigned int y : 16;
184d77cba6dSVictor Campos };
185d77cba6dSVictor Campos
186d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z4fS11v
187d77cba6dSVictor Campos // CHECK: alloca %struct.S11, align 4
188d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S11, align 4
189*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S11_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 15),
190*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S11_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 15, 16),
191d77cba6dSVictor Campos //
fS11()192d77cba6dSVictor Campos void fS11() {
193d77cba6dSVictor Campos S11 s11;
194d77cba6dSVictor Campos auto [a, b] = s11;
195d77cba6dSVictor Campos }
196d77cba6dSVictor Campos
197d77cba6dSVictor Campos struct S12 {
198d77cba6dSVictor Campos unsigned int x : 16;
199d77cba6dSVictor Campos unsigned int y : 17;
200d77cba6dSVictor Campos };
201d77cba6dSVictor Campos
202d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z4fS12v
203d77cba6dSVictor Campos // CHECK: alloca %struct.S12, align 4
204d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S12, align 4
205*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S12_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 16),
206*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S12_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 32, 17),
207d77cba6dSVictor Campos //
fS12()208d77cba6dSVictor Campos void fS12() {
209d77cba6dSVictor Campos S12 s12;
210d77cba6dSVictor Campos auto [a, b] = s12;
211d77cba6dSVictor Campos }
212d77cba6dSVictor Campos
213d77cba6dSVictor Campos struct __attribute__((packed)) S13 {
214d77cba6dSVictor Campos unsigned int x : 15;
215d77cba6dSVictor Campos unsigned int y : 16;
216d77cba6dSVictor Campos };
217d77cba6dSVictor Campos
218d77cba6dSVictor Campos // CHECK-LABEL: define dso_local void @_Z4fS13v
219d77cba6dSVictor Campos // CHECK: alloca %struct.S13, align 1
220d77cba6dSVictor Campos // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S13, align 1
221*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S13_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 0, 15),
222*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S13_B:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_zext, 15, 16),
223d77cba6dSVictor Campos //
fS13()224d77cba6dSVictor Campos void fS13() {
225d77cba6dSVictor Campos S13 s13;
226d77cba6dSVictor Campos auto [a, b] = s13;
227d77cba6dSVictor Campos }
228d77cba6dSVictor Campos
229*fae31e28SJohn Brawn struct S14 {
230*fae31e28SJohn Brawn signed int x;
231*fae31e28SJohn Brawn signed int y : 7;
232*fae31e28SJohn Brawn };
233*fae31e28SJohn Brawn
234*fae31e28SJohn Brawn // CHECK-LABEL: define dso_local void @_Z4fS14v
235*fae31e28SJohn Brawn // CHECK: alloca %struct.S14, align 4
236*fae31e28SJohn Brawn // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S14, align 4
237*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S14_A:![0-9]+]], !DIExpression(),
238*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S14_B:![0-9]+]], !DIExpression(DW_OP_plus_uconst, 4, DW_OP_LLVM_extract_bits_sext, 0, 7),
239*fae31e28SJohn Brawn //
fS14()240*fae31e28SJohn Brawn void fS14() {
241*fae31e28SJohn Brawn S14 s14;
242*fae31e28SJohn Brawn auto [a, b] = s14;
243*fae31e28SJohn Brawn }
244*fae31e28SJohn Brawn
245*fae31e28SJohn Brawn struct S15 {
246*fae31e28SJohn Brawn signed int x : 123;
247*fae31e28SJohn Brawn unsigned int y : 987;
248*fae31e28SJohn Brawn };
249*fae31e28SJohn Brawn
250*fae31e28SJohn Brawn // CHECK-LABEL: define dso_local void @_Z4fS15v
251*fae31e28SJohn Brawn // CHECK: alloca %struct.S15, align 8
252*fae31e28SJohn Brawn // CHECK-NEXT: [[TMP0:%.*]] = alloca %struct.S15, align 8
253*fae31e28SJohn Brawn // CHECK: #dbg_declare(ptr [[TMP0]], [[S15_A:![0-9]+]], !DIExpression(DW_OP_LLVM_extract_bits_sext, 0, 32),
254*fae31e28SJohn Brawn // CHECK-NEXT: #dbg_declare(ptr [[TMP0]], [[S15_B:![0-9]+]], !DIExpression(DW_OP_plus_uconst, 16, DW_OP_LLVM_extract_bits_zext, 0, 32),
255*fae31e28SJohn Brawn //
fS15()256*fae31e28SJohn Brawn void fS15() {
257*fae31e28SJohn Brawn S15 s15;
258*fae31e28SJohn Brawn auto [a, b] = s15;
259*fae31e28SJohn Brawn }
260*fae31e28SJohn Brawn
261d77cba6dSVictor Campos // CHECK: [[UINT_TY:![0-9]+]] = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
262*fae31e28SJohn Brawn // CHECK: [[S0_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
263*fae31e28SJohn Brawn // CHECK: [[S0_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
264d77cba6dSVictor Campos
265d77cba6dSVictor Campos // CHECK: [[VOLATILE_UINT_TY:![0-9]+]] = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: [[UINT_TY]])
266*fae31e28SJohn Brawn // CHECK: [[S1_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY:![0-9]+]])
267*fae31e28SJohn Brawn // CHECK: [[S1_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
268d77cba6dSVictor Campos
269*fae31e28SJohn Brawn // CHECK: [[S2_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
270*fae31e28SJohn Brawn // CHECK: [[S2_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
271d77cba6dSVictor Campos
272*fae31e28SJohn Brawn // CHECK: [[S3_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
273*fae31e28SJohn Brawn // CHECK: [[S3_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
274d77cba6dSVictor Campos
275*fae31e28SJohn Brawn // CHECK: [[S4_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
276*fae31e28SJohn Brawn // CHECK: [[S4_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
277d77cba6dSVictor Campos
278*fae31e28SJohn Brawn // CHECK: [[S5_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
279*fae31e28SJohn Brawn // CHECK: [[S5_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
280d77cba6dSVictor Campos
281*fae31e28SJohn Brawn // CHECK: [[S6_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
282*fae31e28SJohn Brawn // CHECK: [[S6_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
283d77cba6dSVictor Campos
284*fae31e28SJohn Brawn // CHECK: [[S7_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
285*fae31e28SJohn Brawn // CHECK: [[S7_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
286d77cba6dSVictor Campos
287*fae31e28SJohn Brawn // CHECK: [[S8_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
288*fae31e28SJohn Brawn // CHECK: [[S8_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[VOLATILE_UINT_TY]])
289d77cba6dSVictor Campos
290*fae31e28SJohn Brawn // CHECK: [[S9_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
291d77cba6dSVictor Campos // CHECK: [[S9_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
292d77cba6dSVictor Campos
293d77cba6dSVictor Campos // CHECK: [[CONST_UINT_TY:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type, baseType: [[UINT_TY]])
294*fae31e28SJohn Brawn // CHECK: [[CONST_VOLATILE_UINT_TY:![0-9]+]] = !DIDerivedType(tag: DW_TAG_const_type, baseType: [[VOLATILE_UINT_TY]])
295*fae31e28SJohn Brawn // CHECK: [[S10_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[CONST_UINT_TY]])
296*fae31e28SJohn Brawn // CHECK: [[S10_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[CONST_VOLATILE_UINT_TY]])
297d77cba6dSVictor Campos
298d77cba6dSVictor Campos // S11
299*fae31e28SJohn Brawn // CHECK: [[S11_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
300*fae31e28SJohn Brawn // CHECK: [[S11_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
301d77cba6dSVictor Campos
302d77cba6dSVictor Campos // S12
303*fae31e28SJohn Brawn // CHECK: [[S12_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
304*fae31e28SJohn Brawn // CHECK: [[S12_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
305d77cba6dSVictor Campos
306d77cba6dSVictor Campos // S13
307*fae31e28SJohn Brawn // CHECK: [[S13_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
308*fae31e28SJohn Brawn // CHECK: [[S13_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
309*fae31e28SJohn Brawn
310*fae31e28SJohn Brawn // S14
311*fae31e28SJohn Brawn // CHECK: [[SINT_TY:![0-9]+]] = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
312*fae31e28SJohn Brawn // CHECK: [[S14_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[SINT_TY]])
313*fae31e28SJohn Brawn // CHECK: [[S14_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[SINT_TY]])
314*fae31e28SJohn Brawn
315*fae31e28SJohn Brawn // S15
316*fae31e28SJohn Brawn // CHECK: [[S15_A]] = !DILocalVariable(name: "a", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[SINT_TY]])
317*fae31e28SJohn Brawn // CHECK: [[S15_B]] = !DILocalVariable(name: "b", scope: {{.*}}, file: {{.*}}, line: {{.*}}, type: [[UINT_TY]])
318