1 // RUN: %clang_cc1 -std=gnu11 -ast-dump %s | FileCheck -strict-whitespace %s
4 // CHECK: VarDecl{{.*}}TestLocation
5 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0
7 int TestIndent = 1 + (1);
8 // CHECK: VarDecl{{.*}}TestIndent
9 // CHECK-NEXT: {{^}}| `-BinaryOperator{{[^()]*$}}
10 // CHECK-NEXT: {{^}}| |-IntegerLiteral{{.*0[^()]*$}}
11 // CHECK-NEXT: {{^}}| `-ParenExpr{{.*0[^()]*$}}
12 // CHECK-NEXT: {{^}}| `-IntegerLiteral{{.*0[^()]*$}}
18 // CHECK: FunctionDecl{{.*}}TestDeclStmt
19 // CHECK-NEXT: CompoundStmt
20 // CHECK-NEXT: DeclStmt
21 // CHECK-NEXT: VarDecl{{.*}}x
22 // CHECK-NEXT: IntegerLiteral
23 // CHECK-NEXT: DeclStmt
24 // CHECK-NEXT: VarDecl{{.*}}y
25 // CHECK-NEXT: VarDecl{{.*}}z
27 int TestOpaqueValueExpr = 0 ?: 1;
28 // CHECK: VarDecl{{.*}}TestOpaqueValueExpr
29 // CHECK-NEXT: BinaryConditionalOperator
30 // CHECK-NEXT: IntegerLiteral
31 // CHECK-NEXT: OpaqueValueExpr
32 // CHECK-NEXT: IntegerLiteral
33 // CHECK-NEXT: OpaqueValueExpr
\r
34 // CHECK-NEXT: IntegerLiteral
\r
35 // CHECK-NEXT: IntegerLiteral
\r
37 void TestUnaryOperatorExpr(void) {
\r
43 // CHECK: UnaryOperator{{.*}}postfix '++' cannot overflow
\r
44 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
\r
45 // CHECK-NOT: UnaryOperator{{.*}}postfix '++' cannot overflow
\r
46 // CHECK: DeclRefExpr{{.*}}'T2' 'int'
\r
50 // CHECK: UnaryOperator{{.*}}prefix '-' cannot overflow
\r
51 // CHECK-NEXT: ImplicitCastExpr
\r
52 // CHECK-NEXT: ImplicitCastExpr
\r
53 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
\r
54 // CHECK-NOT: UnaryOperator{{.*}}prefix '-' cannot overflow
\r
55 // CHECK: ImplicitCastExpr
\r
56 // CHECK: DeclRefExpr{{.*}}'T2' 'int'
\r
60 // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
\r
61 // CHECK-NEXT: ImplicitCastExpr
\r
62 // CHECK-NEXT: ImplicitCastExpr
\r
63 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
\r
64 // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
\r
65 // CHECK-NEXT: ImplicitCastExpr
\r
66 // CHECK-NEXT: DeclRefExpr{{.*}}'T2' 'int'
\r
69 void TestGenericSelectionExpressions(int i) {
\r
70 _Generic(i, int : 12);
\r
71 // CHECK: GenericSelectionExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:23> 'int'
\r
72 // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}}
\r
73 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
74 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
75 // FIXME: note that the following test line has a spurious whitespace.
\r
76 // CHECK-NEXT: case 'int' selected
\r
77 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
78 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:21> 'int' 12
\r
79 _Generic(i, int : 12, default : 0);
\r
80 // CHECK: GenericSelectionExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:36> 'int'
\r
81 // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}}
\r
82 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
83 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
84 // FIXME: note that the following test line has a spurious whitespace.
\r
85 // CHECK-NEXT: case 'int' selected
\r
86 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
87 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:21> 'int' 12
\r
88 // CHECK-NEXT: default
\r
89 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:35> 'int' 0
\r
90 _Generic(i, default : 0, int : 12);
\r
91 // CHECK: GenericSelectionExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:36> 'int'
\r
92 // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}}
\r
93 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
94 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
95 // CHECK-NEXT: default
\r
96 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:25> 'int' 0
\r
97 // FIXME: note that the following test line has a spurious whitespace.
\r
98 // CHECK-NEXT: case 'int' selected
\r
99 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
100 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:34> 'int' 12
\r
101 _Generic(i, int : 12, float : 10, default : 100);
\r
102 // CHECK: GenericSelectionExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:50> 'int'
\r
103 // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}}
\r
104 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
105 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
106 // FIXME: note that the following test line has a spurious whitespace.
\r
107 // CHECK-NEXT: case 'int' selected
\r
108 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
109 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:21> 'int' 12
\r
110 // FIXME: note that the following test line has a spurious whitespace.
\r
111 // CHECK-NEXT: case 'float'
\r
112 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'float'
\r
113 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:33> 'int' 10
\r
114 // CHECK-NEXT: default
\r
115 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:47> 'int' 100
\r
117 int j = _Generic(i, int : 12);
\r
118 // CHECK: DeclStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:32>
\r
119 // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:3, col:31> col:7 j 'int' cinit
\r
120 // CHECK-NEXT: GenericSelectionExpr 0x{{[^ ]*}} <col:11, col:31> 'int'
\r
121 // CHECK-NEXT: ImplicitCastExpr 0x{{[^ ]*}}
\r
122 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:20> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
123 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
124 // FIXME: note that the following test line has a spurious whitespace.
\r
125 // CHECK-NEXT: case 'int' selected
\r
126 // CHECK-NEXT: BuiltinType 0x{{[^ ]*}} 'int'
\r
127 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:29> 'int' 12
\r
130 void TestLabelsAndGoto(void) {
\r
131 // Note: case and default labels are handled by TestSwitch().
\r
135 // CHECK: LabelStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:1, line:[[@LINE-1]]:3> 'label1'
\r
136 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <col:3>
\r
139 // CHECK-NEXT: GotoStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:8> 'label2' 0x{{[^ ]*}}
\r
143 // CHECK-NEXT: LabelStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:1, line:[[@LINE-1]]:3> 'label2'
\r
144 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:3> 'int' 0
\r
146 void *ptr = &&label1;
\r
147 // CHECK-NEXT: DeclStmt
\r
148 // CHECK-NEXT: VarDecl
\r
149 // CHECK-NEXT: AddrLabelExpr 0x{{[^ ]*}} <col:15, col:17> 'void *' label1 0x{{[^ ]*}}
\r
152 // CHECK-NEXT: IndirectGotoStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:9>
\r
153 // CHECK-NEXT: ImplicitCastExpr
\r
154 // CHECK-NEXT: ImplicitCastExpr
\r
155 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:9> 'void *' lvalue Var 0x{{[^ ]*}} 'ptr' 'void *'
\r
158 void TestSwitch(int i) {
\r
160 // CHECK: SwitchStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, line:[[@LINE+32]]:3>
\r
161 // CHECK-NEXT: ImplicitCastExpr
\r
162 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:11> 'int' lvalue ParmVar 0x{{[^ ]*}} 'i' 'int'
\r
163 // CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <col:14, line:[[@LINE+29]]:3>
\r
166 // CHECK-NEXT: CaseStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
167 // CHECK-NEXT: ConstantExpr
\r
168 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:8> 'int' 0
\r
169 // CHECK-NEXT: BreakStmt 0x{{[^ ]*}} <line:[[@LINE-4]]:5>
\r
173 // CHECK-NEXT: CaseStmt 0x{{[^ ]*}} <line:[[@LINE-3]]:3, line:[[@LINE-1]]:5>
\r
174 // CHECK-NEXT: ConstantExpr
\r
175 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:8> 'int' 1
\r
176 // CHECK-NEXT: CaseStmt 0x{{[^ ]*}} <line:[[@LINE-5]]:3, line:[[@LINE-4]]:5>
\r
177 // CHECK-NEXT: ConstantExpr
\r
178 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:8> 'int' 2
\r
179 // CHECK-NEXT: BreakStmt 0x{{[^ ]*}} <line:[[@LINE-7]]:5>
\r
182 // CHECK-NEXT: DefaultStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
183 // CHECK-NEXT: BreakStmt 0x{{[^ ]*}} <col:5>
\r
186 // CHECK-NEXT: CaseStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5> gnu_range
\r
187 // CHECK-NEXT: ConstantExpr
\r
188 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:8> 'int' 3
\r
189 // CHECK-NEXT: ConstantExpr
\r
190 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:14> 'int' 5
\r
191 // CHECK-NEXT: BreakStmt 0x{{[^ ]*}} <line:[[@LINE-6]]:5>
\r
195 void TestIf(_Bool b) {
\r
198 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
199 // CHECK-NEXT: ImplicitCastExpr
\r
200 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
201 // CHECK-NEXT: NullStmt
\r
204 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:11>
\r
205 // CHECK-NEXT: ImplicitCastExpr
\r
206 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
207 // CHECK-NEXT: CompoundStmt
\r
213 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-4]]:3, line:[[@LINE-1]]:5> has_else
\r
214 // CHECK-NEXT: ImplicitCastExpr
\r
215 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
216 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-6]]:5>
\r
217 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-5]]:5>
\r
221 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:9> has_else
\r
222 // CHECK-NEXT: ImplicitCastExpr
\r
223 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
224 // CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <col:10, col:11>
\r
225 // CHECK-NEXT: CompoundStmt 0x{{[^ ]*}} <line:[[@LINE-5]]:8, col:9>
\r
231 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-4]]:3, line:[[@LINE-1]]:5> has_else
\r
232 // CHECK-NEXT: ImplicitCastExpr
\r
233 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
234 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-6]]:5>
\r
235 // CHECK-NEXT: IfStmt 0x{{[^ ]*}} <line:[[@LINE-6]]:8, line:[[@LINE-5]]:5>
\r
236 // CHECK-NEXT: ImplicitCastExpr
\r
237 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
238 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-8]]:5>
\r
246 // CHECK: IfStmt 0x{{[^ ]*}} <line:[[@LINE-6]]:3, line:[[@LINE-1]]:5> has_else
\r
247 // CHECK-NEXT: ImplicitCastExpr
\r
248 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:7> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
249 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-8]]:5>
\r
250 // CHECK-NEXT: IfStmt 0x{{[^ ]*}} <line:[[@LINE-8]]:8, line:[[@LINE-5]]:5> has_else
\r
251 // CHECK-NEXT: ImplicitCastExpr
\r
252 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:12> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
253 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-10]]:5>
\r
254 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-9]]:5>
\r
257 void TestIteration(_Bool b) {
\r
260 // CHECK: WhileStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
261 // CHECK-NEXT: ImplicitCastExpr
\r
262 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:10> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
263 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-4]]:5>
\r
268 // CHECK: DoStmt 0x{{[^ ]*}} <line:[[@LINE-3]]:3, line:[[@LINE-1]]:11>
\r
269 // CHECK-NEXT: NullStmt 0x{{[^ ]*}} <line:[[@LINE-3]]:5>
\r
270 // CHECK-NEXT: ImplicitCastExpr
\r
271 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:10> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
273 for (int i = 0; i < 10; ++i)
\r
275 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
276 // CHECK-NEXT: DeclStmt
\r
277 // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:8, col:16> col:12 used i 'int' cinit
\r
278 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:16> 'int' 0
\r
279 // CHECK-NEXT: <<<NULL>>>
\r
280 // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:19, col:23> 'int' '<'
\r
281 // CHECK-NEXT: ImplicitCastExpr
\r
282 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:19> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
\r
283 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 10
\r
284 // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:27, col:29> 'int' prefix '++'
\r
285 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:29> 'int' lvalue Var 0x{{[^ ]*}} 'i' 'int'
\r
286 // CHECK-NEXT: NullStmt
\r
290 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
291 // CHECK-NEXT: ImplicitCastExpr
\r
292 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:8> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
293 // CHECK-NEXT: <<<NULL>>>
\r
294 // CHECK-NEXT: ImplicitCastExpr
\r
295 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:11> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
296 // CHECK-NEXT: ImplicitCastExpr
\r
297 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:14> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
298 // CHECK-NEXT: NullStmt
\r
302 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
303 // CHECK-NEXT: <<<NULL>>>
\r
304 // CHECK-NEXT: <<<NULL>>>
\r
305 // CHECK-NEXT: ImplicitCastExpr
\r
306 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:10> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
307 // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <col:13, col:18> '_Bool' '='
\r
308 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:13> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
309 // CHECK-NEXT: ImplicitCastExpr
\r
310 // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:17, col:18> 'int' prefix '!' cannot overflow
\r
311 // CHECK-NEXT: ImplicitCastExpr
\r
312 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:18> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
313 // CHECK-NEXT: NullStmt
\r
317 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
318 // CHECK-NEXT: <<<NULL>>>
\r
319 // CHECK-NEXT: <<<NULL>>>
\r
320 // CHECK-NEXT: ImplicitCastExpr
\r
321 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:10> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
322 // CHECK-NEXT: <<<NULL>>>
\r
323 // CHECK-NEXT: NullStmt
\r
327 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
328 // CHECK-NEXT: <<<NULL>>>
\r
329 // CHECK-NEXT: <<<NULL>>>
\r
330 // CHECK-NEXT: <<<NULL>>>
\r
331 // CHECK-NEXT: BinaryOperator 0x{{[^ ]*}} <line:[[@LINE-6]]:11, col:16> '_Bool' '='
\r
332 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:11> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
333 // CHECK-NEXT: ImplicitCastExpr
\r
334 // CHECK-NEXT: UnaryOperator 0x{{[^ ]*}} <col:15, col:16> 'int' prefix '!' cannot overflow
\r
335 // CHECK-NEXT: ImplicitCastExpr
\r
336 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:16> '_Bool' lvalue ParmVar 0x{{[^ ]*}} 'b' '_Bool'
\r
337 // CHECK-NEXT: NullStmt
\r
341 // CHECK: ForStmt 0x{{[^ ]*}} <line:[[@LINE-2]]:3, line:[[@LINE-1]]:5>
\r
342 // CHECK-NEXT: <<<NULL>>>
\r
343 // CHECK-NEXT: <<<NULL>>>
\r
344 // CHECK-NEXT: <<<NULL>>>
\r
345 // CHECK-NEXT: <<<NULL>>>
\r
346 // CHECK-NEXT: NullStmt
\r
349 void TestJumps(void) {
\r
350 // goto and computed goto was tested in TestLabelsAndGoto().
\r
354 // CHECK: ContinueStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:5>
\r
356 // CHECK: BreakStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:5>
\r
359 // CHECK: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3>
\r
361 return TestSwitch(1);
\r
362 // CHECK: ReturnStmt 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:22>
\r
363 // CHECK-NEXT: CallExpr 0x{{[^ ]*}} <col:10, col:22> 'void'
\r
366 void TestMiscStmts(void) {
\r
367 ({int a = 10; a;});
\r
368 // CHECK: StmtExpr 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:20> 'int'
\r
369 // CHECK-NEXT: CompoundStmt
\r
370 // CHECK-NEXT: DeclStmt
\r
371 // CHECK-NEXT: VarDecl 0x{{[^ ]*}} <col:5, col:13> col:9 used a 'int' cinit
\r
372 // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:13> 'int' 10
\r
373 // CHECK-NEXT: ImplicitCastExpr
\r
374 // CHECK-NEXT: DeclRefExpr 0x{{[^ ]*}} <col:17> 'int' lvalue Var 0x{{[^ ]*}} 'a' 'int'
\r