[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / AST / ast-dump-pragma-json.c
blobc2ab154e6402bdeaa652e054222caa891458218a
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
3 float func_16(float x, float y) {
4 #pragma STDC FENV_ROUND FE_TOWARDZERO
5 if (x < 0) {
6 #pragma STDC FENV_ROUND FE_UPWARD
7 return x - y;
9 return x + y;
12 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
13 // using --filters=CompoundStmt
16 // CHECK-NOT: {{^}}Dumping
17 // CHECK: "kind": "CompoundStmt",
18 // CHECK-NEXT: "range": {
19 // CHECK-NEXT: "begin": {
20 // CHECK-NEXT: "offset": 116,
21 // CHECK-NEXT: "col": 33,
22 // CHECK-NEXT: "tokLen": 1
23 // CHECK-NEXT: },
24 // CHECK-NEXT: "end": {
25 // CHECK-NEXT: "offset": 249,
26 // CHECK-NEXT: "line": 10,
27 // CHECK-NEXT: "col": 1,
28 // CHECK-NEXT: "tokLen": 1
29 // CHECK-NEXT: }
30 // CHECK-NEXT: },
31 // CHECK-NEXT: "fpoptions": {
32 // CHECK-NEXT: "ConstRoundingMode": 0
33 // CHECK-NEXT: },
34 // CHECK-NEXT: "inner": [
35 // CHECK-NEXT: {
36 // CHECK-NEXT: "id": "0x{{.*}}",
37 // CHECK-NEXT: "kind": "IfStmt",
38 // CHECK-NEXT: "range": {
39 // CHECK-NEXT: "begin": {
40 // CHECK-NEXT: "offset": 160,
41 // CHECK-NEXT: "line": 5,
42 // CHECK-NEXT: "col": 3,
43 // CHECK-NEXT: "tokLen": 2
44 // CHECK-NEXT: },
45 // CHECK-NEXT: "end": {
46 // CHECK-NEXT: "offset": 231,
47 // CHECK-NEXT: "line": 8,
48 // CHECK-NEXT: "col": 3,
49 // CHECK-NEXT: "tokLen": 1
50 // CHECK-NEXT: }
51 // CHECK-NEXT: },
52 // CHECK-NEXT: "inner": [
53 // CHECK-NEXT: {
54 // CHECK-NEXT: "id": "0x{{.*}}",
55 // CHECK-NEXT: "kind": "BinaryOperator",
56 // CHECK-NEXT: "range": {
57 // CHECK-NEXT: "begin": {
58 // CHECK-NEXT: "offset": 164,
59 // CHECK-NEXT: "line": 5,
60 // CHECK-NEXT: "col": 7,
61 // CHECK-NEXT: "tokLen": 1
62 // CHECK-NEXT: },
63 // CHECK-NEXT: "end": {
64 // CHECK-NEXT: "offset": 168,
65 // CHECK-NEXT: "col": 11,
66 // CHECK-NEXT: "tokLen": 1
67 // CHECK-NEXT: }
68 // CHECK-NEXT: },
69 // CHECK-NEXT: "type": {
70 // CHECK-NEXT: "qualType": "int"
71 // CHECK-NEXT: },
72 // CHECK-NEXT: "valueCategory": "prvalue",
73 // CHECK-NEXT: "opcode": "<",
74 // CHECK-NEXT: "inner": [
75 // CHECK-NEXT: {
76 // CHECK-NEXT: "id": "0x{{.*}}",
77 // CHECK-NEXT: "kind": "ImplicitCastExpr",
78 // CHECK-NEXT: "range": {
79 // CHECK-NEXT: "begin": {
80 // CHECK-NEXT: "offset": 164,
81 // CHECK-NEXT: "col": 7,
82 // CHECK-NEXT: "tokLen": 1
83 // CHECK-NEXT: },
84 // CHECK-NEXT: "end": {
85 // CHECK-NEXT: "offset": 164,
86 // CHECK-NEXT: "col": 7,
87 // CHECK-NEXT: "tokLen": 1
88 // CHECK-NEXT: }
89 // CHECK-NEXT: },
90 // CHECK-NEXT: "type": {
91 // CHECK-NEXT: "qualType": "float"
92 // CHECK-NEXT: },
93 // CHECK-NEXT: "valueCategory": "prvalue",
94 // CHECK-NEXT: "castKind": "LValueToRValue",
95 // CHECK-NEXT: "inner": [
96 // CHECK-NEXT: {
97 // CHECK-NEXT: "id": "0x{{.*}}",
98 // CHECK-NEXT: "kind": "DeclRefExpr",
99 // CHECK-NEXT: "range": {
100 // CHECK-NEXT: "begin": {
101 // CHECK-NEXT: "offset": 164,
102 // CHECK-NEXT: "col": 7,
103 // CHECK-NEXT: "tokLen": 1
104 // CHECK-NEXT: },
105 // CHECK-NEXT: "end": {
106 // CHECK-NEXT: "offset": 164,
107 // CHECK-NEXT: "col": 7,
108 // CHECK-NEXT: "tokLen": 1
109 // CHECK-NEXT: }
110 // CHECK-NEXT: },
111 // CHECK-NEXT: "type": {
112 // CHECK-NEXT: "qualType": "float"
113 // CHECK-NEXT: },
114 // CHECK-NEXT: "valueCategory": "lvalue",
115 // CHECK-NEXT: "referencedDecl": {
116 // CHECK-NEXT: "id": "0x{{.*}}",
117 // CHECK-NEXT: "kind": "ParmVarDecl",
118 // CHECK-NEXT: "name": "x",
119 // CHECK-NEXT: "type": {
120 // CHECK-NEXT: "qualType": "float"
121 // CHECK-NEXT: }
122 // CHECK-NEXT: }
123 // CHECK-NEXT: }
124 // CHECK-NEXT: ]
125 // CHECK-NEXT: },
126 // CHECK-NEXT: {
127 // CHECK-NEXT: "id": "0x{{.*}}",
128 // CHECK-NEXT: "kind": "ImplicitCastExpr",
129 // CHECK-NEXT: "range": {
130 // CHECK-NEXT: "begin": {
131 // CHECK-NEXT: "offset": 168,
132 // CHECK-NEXT: "col": 11,
133 // CHECK-NEXT: "tokLen": 1
134 // CHECK-NEXT: },
135 // CHECK-NEXT: "end": {
136 // CHECK-NEXT: "offset": 168,
137 // CHECK-NEXT: "col": 11,
138 // CHECK-NEXT: "tokLen": 1
139 // CHECK-NEXT: }
140 // CHECK-NEXT: },
141 // CHECK-NEXT: "type": {
142 // CHECK-NEXT: "qualType": "float"
143 // CHECK-NEXT: },
144 // CHECK-NEXT: "valueCategory": "prvalue",
145 // CHECK-NEXT: "castKind": "IntegralToFloating",
146 // CHECK-NEXT: "inner": [
147 // CHECK-NEXT: {
148 // CHECK-NEXT: "id": "0x{{.*}}",
149 // CHECK-NEXT: "kind": "IntegerLiteral",
150 // CHECK-NEXT: "range": {
151 // CHECK-NEXT: "begin": {
152 // CHECK-NEXT: "offset": 168,
153 // CHECK-NEXT: "col": 11,
154 // CHECK-NEXT: "tokLen": 1
155 // CHECK-NEXT: },
156 // CHECK-NEXT: "end": {
157 // CHECK-NEXT: "offset": 168,
158 // CHECK-NEXT: "col": 11,
159 // CHECK-NEXT: "tokLen": 1
160 // CHECK-NEXT: }
161 // CHECK-NEXT: },
162 // CHECK-NEXT: "type": {
163 // CHECK-NEXT: "qualType": "int"
164 // CHECK-NEXT: },
165 // CHECK-NEXT: "valueCategory": "prvalue",
166 // CHECK-NEXT: "value": "0"
167 // CHECK-NEXT: }
168 // CHECK-NEXT: ]
169 // CHECK-NEXT: }
170 // CHECK-NEXT: ]
171 // CHECK-NEXT: },
172 // CHECK-NEXT: {
173 // CHECK-NEXT: "id": "0x{{.*}}",
174 // CHECK-NEXT: "kind": "CompoundStmt",
175 // CHECK-NEXT: "range": {
176 // CHECK-NEXT: "begin": {
177 // CHECK-NEXT: "offset": 171,
178 // CHECK-NEXT: "col": 14,
179 // CHECK-NEXT: "tokLen": 1
180 // CHECK-NEXT: },
181 // CHECK-NEXT: "end": {
182 // CHECK-NEXT: "offset": 231,
183 // CHECK-NEXT: "line": 8,
184 // CHECK-NEXT: "col": 3,
185 // CHECK-NEXT: "tokLen": 1
186 // CHECK-NEXT: }
187 // CHECK-NEXT: },
188 // CHECK-NEXT: "fpoptions": {
189 // CHECK-NEXT: "ConstRoundingMode": 2
190 // CHECK-NEXT: },
191 // CHECK-NEXT: "inner": [
192 // CHECK-NEXT: {
193 // CHECK-NEXT: "id": "0x{{.*}}",
194 // CHECK-NEXT: "kind": "ReturnStmt",
195 // CHECK-NEXT: "range": {
196 // CHECK-NEXT: "begin": {
197 // CHECK-NEXT: "offset": 215,
198 // CHECK-NEXT: "line": 7,
199 // CHECK-NEXT: "col": 5,
200 // CHECK-NEXT: "tokLen": 6
201 // CHECK-NEXT: },
202 // CHECK-NEXT: "end": {
203 // CHECK-NEXT: "offset": 226,
204 // CHECK-NEXT: "col": 16,
205 // CHECK-NEXT: "tokLen": 1
206 // CHECK-NEXT: }
207 // CHECK-NEXT: },
208 // CHECK-NEXT: "inner": [
209 // CHECK-NEXT: {
210 // CHECK-NEXT: "id": "0x{{.*}}",
211 // CHECK-NEXT: "kind": "BinaryOperator",
212 // CHECK-NEXT: "range": {
213 // CHECK-NEXT: "begin": {
214 // CHECK-NEXT: "offset": 222,
215 // CHECK-NEXT: "col": 12,
216 // CHECK-NEXT: "tokLen": 1
217 // CHECK-NEXT: },
218 // CHECK-NEXT: "end": {
219 // CHECK-NEXT: "offset": 226,
220 // CHECK-NEXT: "col": 16,
221 // CHECK-NEXT: "tokLen": 1
222 // CHECK-NEXT: }
223 // CHECK-NEXT: },
224 // CHECK-NEXT: "type": {
225 // CHECK-NEXT: "qualType": "float"
226 // CHECK-NEXT: },
227 // CHECK-NEXT: "valueCategory": "prvalue",
228 // CHECK-NEXT: "opcode": "-",
229 // CHECK-NEXT: "inner": [
230 // CHECK-NEXT: {
231 // CHECK-NEXT: "id": "0x{{.*}}",
232 // CHECK-NEXT: "kind": "ImplicitCastExpr",
233 // CHECK-NEXT: "range": {
234 // CHECK-NEXT: "begin": {
235 // CHECK-NEXT: "offset": 222,
236 // CHECK-NEXT: "col": 12,
237 // CHECK-NEXT: "tokLen": 1
238 // CHECK-NEXT: },
239 // CHECK-NEXT: "end": {
240 // CHECK-NEXT: "offset": 222,
241 // CHECK-NEXT: "col": 12,
242 // CHECK-NEXT: "tokLen": 1
243 // CHECK-NEXT: }
244 // CHECK-NEXT: },
245 // CHECK-NEXT: "type": {
246 // CHECK-NEXT: "qualType": "float"
247 // CHECK-NEXT: },
248 // CHECK-NEXT: "valueCategory": "prvalue",
249 // CHECK-NEXT: "castKind": "LValueToRValue",
250 // CHECK-NEXT: "inner": [
251 // CHECK-NEXT: {
252 // CHECK-NEXT: "id": "0x{{.*}}",
253 // CHECK-NEXT: "kind": "DeclRefExpr",
254 // CHECK-NEXT: "range": {
255 // CHECK-NEXT: "begin": {
256 // CHECK-NEXT: "offset": 222,
257 // CHECK-NEXT: "col": 12,
258 // CHECK-NEXT: "tokLen": 1
259 // CHECK-NEXT: },
260 // CHECK-NEXT: "end": {
261 // CHECK-NEXT: "offset": 222,
262 // CHECK-NEXT: "col": 12,
263 // CHECK-NEXT: "tokLen": 1
264 // CHECK-NEXT: }
265 // CHECK-NEXT: },
266 // CHECK-NEXT: "type": {
267 // CHECK-NEXT: "qualType": "float"
268 // CHECK-NEXT: },
269 // CHECK-NEXT: "valueCategory": "lvalue",
270 // CHECK-NEXT: "referencedDecl": {
271 // CHECK-NEXT: "id": "0x{{.*}}",
272 // CHECK-NEXT: "kind": "ParmVarDecl",
273 // CHECK-NEXT: "name": "x",
274 // CHECK-NEXT: "type": {
275 // CHECK-NEXT: "qualType": "float"
276 // CHECK-NEXT: }
277 // CHECK-NEXT: }
278 // CHECK-NEXT: }
279 // CHECK-NEXT: ]
280 // CHECK-NEXT: },
281 // CHECK-NEXT: {
282 // CHECK-NEXT: "id": "0x{{.*}}",
283 // CHECK-NEXT: "kind": "ImplicitCastExpr",
284 // CHECK-NEXT: "range": {
285 // CHECK-NEXT: "begin": {
286 // CHECK-NEXT: "offset": 226,
287 // CHECK-NEXT: "col": 16,
288 // CHECK-NEXT: "tokLen": 1
289 // CHECK-NEXT: },
290 // CHECK-NEXT: "end": {
291 // CHECK-NEXT: "offset": 226,
292 // CHECK-NEXT: "col": 16,
293 // CHECK-NEXT: "tokLen": 1
294 // CHECK-NEXT: }
295 // CHECK-NEXT: },
296 // CHECK-NEXT: "type": {
297 // CHECK-NEXT: "qualType": "float"
298 // CHECK-NEXT: },
299 // CHECK-NEXT: "valueCategory": "prvalue",
300 // CHECK-NEXT: "castKind": "LValueToRValue",
301 // CHECK-NEXT: "inner": [
302 // CHECK-NEXT: {
303 // CHECK-NEXT: "id": "0x{{.*}}",
304 // CHECK-NEXT: "kind": "DeclRefExpr",
305 // CHECK-NEXT: "range": {
306 // CHECK-NEXT: "begin": {
307 // CHECK-NEXT: "offset": 226,
308 // CHECK-NEXT: "col": 16,
309 // CHECK-NEXT: "tokLen": 1
310 // CHECK-NEXT: },
311 // CHECK-NEXT: "end": {
312 // CHECK-NEXT: "offset": 226,
313 // CHECK-NEXT: "col": 16,
314 // CHECK-NEXT: "tokLen": 1
315 // CHECK-NEXT: }
316 // CHECK-NEXT: },
317 // CHECK-NEXT: "type": {
318 // CHECK-NEXT: "qualType": "float"
319 // CHECK-NEXT: },
320 // CHECK-NEXT: "valueCategory": "lvalue",
321 // CHECK-NEXT: "referencedDecl": {
322 // CHECK-NEXT: "id": "0x{{.*}}",
323 // CHECK-NEXT: "kind": "ParmVarDecl",
324 // CHECK-NEXT: "name": "y",
325 // CHECK-NEXT: "type": {
326 // CHECK-NEXT: "qualType": "float"
327 // CHECK-NEXT: }
328 // CHECK-NEXT: }
329 // CHECK-NEXT: }
330 // CHECK-NEXT: ]
331 // CHECK-NEXT: }
332 // CHECK-NEXT: ]
333 // CHECK-NEXT: }
334 // CHECK-NEXT: ]
335 // CHECK-NEXT: }
336 // CHECK-NEXT: ]
337 // CHECK-NEXT: }
338 // CHECK-NEXT: ]
339 // CHECK-NEXT: },
340 // CHECK-NEXT: {
341 // CHECK-NEXT: "id": "0x{{.*}}",
342 // CHECK-NEXT: "kind": "ReturnStmt",
343 // CHECK-NEXT: "range": {
344 // CHECK-NEXT: "begin": {
345 // CHECK-NEXT: "offset": 235,
346 // CHECK-NEXT: "line": 9,
347 // CHECK-NEXT: "col": 3,
348 // CHECK-NEXT: "tokLen": 6
349 // CHECK-NEXT: },
350 // CHECK-NEXT: "end": {
351 // CHECK-NEXT: "offset": 246,
352 // CHECK-NEXT: "col": 14,
353 // CHECK-NEXT: "tokLen": 1
354 // CHECK-NEXT: }
355 // CHECK-NEXT: },
356 // CHECK-NEXT: "inner": [
357 // CHECK-NEXT: {
358 // CHECK-NEXT: "id": "0x{{.*}}",
359 // CHECK-NEXT: "kind": "BinaryOperator",
360 // CHECK-NEXT: "range": {
361 // CHECK-NEXT: "begin": {
362 // CHECK-NEXT: "offset": 242,
363 // CHECK-NEXT: "col": 10,
364 // CHECK-NEXT: "tokLen": 1
365 // CHECK-NEXT: },
366 // CHECK-NEXT: "end": {
367 // CHECK-NEXT: "offset": 246,
368 // CHECK-NEXT: "col": 14,
369 // CHECK-NEXT: "tokLen": 1
370 // CHECK-NEXT: }
371 // CHECK-NEXT: },
372 // CHECK-NEXT: "type": {
373 // CHECK-NEXT: "qualType": "float"
374 // CHECK-NEXT: },
375 // CHECK-NEXT: "valueCategory": "prvalue",
376 // CHECK-NEXT: "opcode": "+",
377 // CHECK-NEXT: "inner": [
378 // CHECK-NEXT: {
379 // CHECK-NEXT: "id": "0x{{.*}}",
380 // CHECK-NEXT: "kind": "ImplicitCastExpr",
381 // CHECK-NEXT: "range": {
382 // CHECK-NEXT: "begin": {
383 // CHECK-NEXT: "offset": 242,
384 // CHECK-NEXT: "col": 10,
385 // CHECK-NEXT: "tokLen": 1
386 // CHECK-NEXT: },
387 // CHECK-NEXT: "end": {
388 // CHECK-NEXT: "offset": 242,
389 // CHECK-NEXT: "col": 10,
390 // CHECK-NEXT: "tokLen": 1
391 // CHECK-NEXT: }
392 // CHECK-NEXT: },
393 // CHECK-NEXT: "type": {
394 // CHECK-NEXT: "qualType": "float"
395 // CHECK-NEXT: },
396 // CHECK-NEXT: "valueCategory": "prvalue",
397 // CHECK-NEXT: "castKind": "LValueToRValue",
398 // CHECK-NEXT: "inner": [
399 // CHECK-NEXT: {
400 // CHECK-NEXT: "id": "0x{{.*}}",
401 // CHECK-NEXT: "kind": "DeclRefExpr",
402 // CHECK-NEXT: "range": {
403 // CHECK-NEXT: "begin": {
404 // CHECK-NEXT: "offset": 242,
405 // CHECK-NEXT: "col": 10,
406 // CHECK-NEXT: "tokLen": 1
407 // CHECK-NEXT: },
408 // CHECK-NEXT: "end": {
409 // CHECK-NEXT: "offset": 242,
410 // CHECK-NEXT: "col": 10,
411 // CHECK-NEXT: "tokLen": 1
412 // CHECK-NEXT: }
413 // CHECK-NEXT: },
414 // CHECK-NEXT: "type": {
415 // CHECK-NEXT: "qualType": "float"
416 // CHECK-NEXT: },
417 // CHECK-NEXT: "valueCategory": "lvalue",
418 // CHECK-NEXT: "referencedDecl": {
419 // CHECK-NEXT: "id": "0x{{.*}}",
420 // CHECK-NEXT: "kind": "ParmVarDecl",
421 // CHECK-NEXT: "name": "x",
422 // CHECK-NEXT: "type": {
423 // CHECK-NEXT: "qualType": "float"
424 // CHECK-NEXT: }
425 // CHECK-NEXT: }
426 // CHECK-NEXT: }
427 // CHECK-NEXT: ]
428 // CHECK-NEXT: },
429 // CHECK-NEXT: {
430 // CHECK-NEXT: "id": "0x{{.*}}",
431 // CHECK-NEXT: "kind": "ImplicitCastExpr",
432 // CHECK-NEXT: "range": {
433 // CHECK-NEXT: "begin": {
434 // CHECK-NEXT: "offset": 246,
435 // CHECK-NEXT: "col": 14,
436 // CHECK-NEXT: "tokLen": 1
437 // CHECK-NEXT: },
438 // CHECK-NEXT: "end": {
439 // CHECK-NEXT: "offset": 246,
440 // CHECK-NEXT: "col": 14,
441 // CHECK-NEXT: "tokLen": 1
442 // CHECK-NEXT: }
443 // CHECK-NEXT: },
444 // CHECK-NEXT: "type": {
445 // CHECK-NEXT: "qualType": "float"
446 // CHECK-NEXT: },
447 // CHECK-NEXT: "valueCategory": "prvalue",
448 // CHECK-NEXT: "castKind": "LValueToRValue",
449 // CHECK-NEXT: "inner": [
450 // CHECK-NEXT: {
451 // CHECK-NEXT: "id": "0x{{.*}}",
452 // CHECK-NEXT: "kind": "DeclRefExpr",
453 // CHECK-NEXT: "range": {
454 // CHECK-NEXT: "begin": {
455 // CHECK-NEXT: "offset": 246,
456 // CHECK-NEXT: "col": 14,
457 // CHECK-NEXT: "tokLen": 1
458 // CHECK-NEXT: },
459 // CHECK-NEXT: "end": {
460 // CHECK-NEXT: "offset": 246,
461 // CHECK-NEXT: "col": 14,
462 // CHECK-NEXT: "tokLen": 1
463 // CHECK-NEXT: }
464 // CHECK-NEXT: },
465 // CHECK-NEXT: "type": {
466 // CHECK-NEXT: "qualType": "float"
467 // CHECK-NEXT: },
468 // CHECK-NEXT: "valueCategory": "lvalue",
469 // CHECK-NEXT: "referencedDecl": {
470 // CHECK-NEXT: "id": "0x{{.*}}",
471 // CHECK-NEXT: "kind": "ParmVarDecl",
472 // CHECK-NEXT: "name": "y",
473 // CHECK-NEXT: "type": {
474 // CHECK-NEXT: "qualType": "float"
475 // CHECK-NEXT: }
476 // CHECK-NEXT: }
477 // CHECK-NEXT: }
478 // CHECK-NEXT: ]
479 // CHECK-NEXT: }
480 // CHECK-NEXT: ]
481 // CHECK-NEXT: }
482 // CHECK-NEXT: ]
483 // CHECK-NEXT: }
484 // CHECK-NEXT: ]
485 // CHECK-NEXT: }