Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / AST / ast-dump-attr-json.cpp
blob051c2956abfdf7b29c3d77ef388683d83fb679e3
1 // RUN: %clang_cc1 -triple x86_64-pc-linux -Wdocumentation -ast-dump=json %s | FileCheck %s
3 int global_decl;
4 extern __attribute__((alias("global_decl"))) int global_alias;
6 void cleanup_function(int*);
7 void some() {
8 __attribute__((cleanup(cleanup_function))) int var;
11 __attribute__((deprecated)) int deprecated_var0;
12 __attribute__((deprecated("reason"))) int deprecated_var1;
13 __attribute__((deprecated("reason", "replacement"))) int deprecated_var2;
15 __attribute__((unavailable)) int unavailable_var0;
16 __attribute__((unavailable("reason"))) int unavailable_var1;
18 __attribute__ ((section ("SECTION_NAME"))) int section_var;
20 __attribute__ ((visibility ("hidden"))) int visibility_var;
22 __thread __attribute__ ((tls_model ("local-exec"))) int tls_model_var;
24 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
25 // using --filters=VarDecl
28 // CHECK-NOT: {{^}}Dumping
29 // CHECK: "kind": "VarDecl",
30 // CHECK-NEXT: "loc": {
31 // CHECK-NEXT: "offset": 97,
32 // CHECK-NEXT: "file": "{{.*}}",
33 // CHECK-NEXT: "line": 3,
34 // CHECK-NEXT: "col": 5,
35 // CHECK-NEXT: "tokLen": 11
36 // CHECK-NEXT: },
37 // CHECK-NEXT: "range": {
38 // CHECK-NEXT: "begin": {
39 // CHECK-NEXT: "offset": 93,
40 // CHECK-NEXT: "col": 1,
41 // CHECK-NEXT: "tokLen": 3
42 // CHECK-NEXT: },
43 // CHECK-NEXT: "end": {
44 // CHECK-NEXT: "offset": 97,
45 // CHECK-NEXT: "col": 5,
46 // CHECK-NEXT: "tokLen": 11
47 // CHECK-NEXT: }
48 // CHECK-NEXT: },
49 // CHECK-NEXT: "name": "global_decl",
50 // CHECK-NEXT: "mangledName": "global_decl",
51 // CHECK-NEXT: "type": {
52 // CHECK-NEXT: "qualType": "int"
53 // CHECK-NEXT: }
54 // CHECK-NEXT: }
57 // CHECK-NOT: {{^}}Dumping
58 // CHECK: "kind": "VarDecl",
59 // CHECK-NEXT: "loc": {
60 // CHECK-NEXT: "offset": 159,
61 // CHECK-NEXT: "line": 4,
62 // CHECK-NEXT: "col": 50,
63 // CHECK-NEXT: "tokLen": 12
64 // CHECK-NEXT: },
65 // CHECK-NEXT: "range": {
66 // CHECK-NEXT: "begin": {
67 // CHECK-NEXT: "offset": 110,
68 // CHECK-NEXT: "col": 1,
69 // CHECK-NEXT: "tokLen": 6
70 // CHECK-NEXT: },
71 // CHECK-NEXT: "end": {
72 // CHECK-NEXT: "offset": 159,
73 // CHECK-NEXT: "col": 50,
74 // CHECK-NEXT: "tokLen": 12
75 // CHECK-NEXT: }
76 // CHECK-NEXT: },
77 // CHECK-NEXT: "name": "global_alias",
78 // CHECK-NEXT: "mangledName": "global_alias",
79 // CHECK-NEXT: "type": {
80 // CHECK-NEXT: "qualType": "int"
81 // CHECK-NEXT: },
82 // CHECK-NEXT: "storageClass": "extern",
83 // CHECK-NEXT: "inner": [
84 // CHECK-NEXT: {
85 // CHECK-NEXT: "id": "0x{{.*}}",
86 // CHECK-NEXT: "kind": "AliasAttr",
87 // CHECK-NEXT: "range": {
88 // CHECK-NEXT: "begin": {
89 // CHECK-NEXT: "offset": 132,
90 // CHECK-NEXT: "col": 23,
91 // CHECK-NEXT: "tokLen": 5
92 // CHECK-NEXT: },
93 // CHECK-NEXT: "end": {
94 // CHECK-NEXT: "offset": 151,
95 // CHECK-NEXT: "col": 42,
96 // CHECK-NEXT: "tokLen": 1
97 // CHECK-NEXT: }
98 // CHECK-NEXT: },
99 // CHECK-NEXT: "aliasee": "global_decl"
100 // CHECK-NEXT: }
101 // CHECK-NEXT: ]
102 // CHECK-NEXT: }
105 // CHECK-NOT: {{^}}Dumping
106 // CHECK: "kind": "VarDecl",
107 // CHECK-NEXT: "loc": {
108 // CHECK-NEXT: "offset": 266,
109 // CHECK-NEXT: "col": 50,
110 // CHECK-NEXT: "tokLen": 3
111 // CHECK-NEXT: },
112 // CHECK-NEXT: "range": {
113 // CHECK-NEXT: "begin": {
114 // CHECK-NEXT: "offset": 219,
115 // CHECK-NEXT: "col": 3,
116 // CHECK-NEXT: "tokLen": 13
117 // CHECK-NEXT: },
118 // CHECK-NEXT: "end": {
119 // CHECK-NEXT: "offset": 266,
120 // CHECK-NEXT: "col": 50,
121 // CHECK-NEXT: "tokLen": 3
122 // CHECK-NEXT: }
123 // CHECK-NEXT: },
124 // CHECK-NEXT: "name": "var",
125 // CHECK-NEXT: "type": {
126 // CHECK-NEXT: "qualType": "int"
127 // CHECK-NEXT: },
128 // CHECK-NEXT: "inner": [
129 // CHECK-NEXT: {
130 // CHECK-NEXT: "id": "0x{{.*}}",
131 // CHECK-NEXT: "kind": "CleanupAttr",
132 // CHECK-NEXT: "range": {
133 // CHECK-NEXT: "begin": {
134 // CHECK-NEXT: "offset": 234,
135 // CHECK-NEXT: "col": 18,
136 // CHECK-NEXT: "tokLen": 7
137 // CHECK-NEXT: },
138 // CHECK-NEXT: "end": {
139 // CHECK-NEXT: "offset": 258,
140 // CHECK-NEXT: "col": 42,
141 // CHECK-NEXT: "tokLen": 1
142 // CHECK-NEXT: }
143 // CHECK-NEXT: },
144 // CHECK-NEXT: "cleanup_function": {
145 // CHECK-NEXT: "id": "0x{{.*}}",
146 // CHECK-NEXT: "kind": "FunctionDecl",
147 // CHECK-NEXT: "name": "cleanup_function",
148 // CHECK-NEXT: "type": {
149 // CHECK-NEXT: "qualType": "void (int *)"
150 // CHECK-NEXT: }
151 // CHECK-NEXT: }
152 // CHECK-NEXT: }
153 // CHECK-NEXT: ]
154 // CHECK-NEXT: }
157 // CHECK-NOT: {{^}}Dumping
158 // CHECK: "kind": "VarDecl",
159 // CHECK-NEXT: "loc": {
160 // CHECK-NEXT: "offset": 306,
161 // CHECK-NEXT: "line": 11,
162 // CHECK-NEXT: "col": 33,
163 // CHECK-NEXT: "tokLen": 15
164 // CHECK-NEXT: },
165 // CHECK-NEXT: "range": {
166 // CHECK-NEXT: "begin": {
167 // CHECK-NEXT: "offset": 274,
168 // CHECK-NEXT: "col": 1,
169 // CHECK-NEXT: "tokLen": 13
170 // CHECK-NEXT: },
171 // CHECK-NEXT: "end": {
172 // CHECK-NEXT: "offset": 306,
173 // CHECK-NEXT: "col": 33,
174 // CHECK-NEXT: "tokLen": 15
175 // CHECK-NEXT: }
176 // CHECK-NEXT: },
177 // CHECK-NEXT: "name": "deprecated_var0",
178 // CHECK-NEXT: "mangledName": "deprecated_var0",
179 // CHECK-NEXT: "type": {
180 // CHECK-NEXT: "qualType": "int"
181 // CHECK-NEXT: },
182 // CHECK-NEXT: "inner": [
183 // CHECK-NEXT: {
184 // CHECK-NEXT: "id": "0x{{.*}}",
185 // CHECK-NEXT: "kind": "DeprecatedAttr",
186 // CHECK-NEXT: "range": {
187 // CHECK-NEXT: "begin": {
188 // CHECK-NEXT: "offset": 289,
189 // CHECK-NEXT: "col": 16,
190 // CHECK-NEXT: "tokLen": 10
191 // CHECK-NEXT: },
192 // CHECK-NEXT: "end": {
193 // CHECK-NEXT: "offset": 289,
194 // CHECK-NEXT: "col": 16,
195 // CHECK-NEXT: "tokLen": 10
196 // CHECK-NEXT: }
197 // CHECK-NEXT: }
198 // CHECK-NEXT: }
199 // CHECK-NEXT: ]
200 // CHECK-NEXT: }
203 // CHECK-NOT: {{^}}Dumping
204 // CHECK: "kind": "VarDecl",
205 // CHECK-NEXT: "loc": {
206 // CHECK-NEXT: "offset": 365,
207 // CHECK-NEXT: "line": 12,
208 // CHECK-NEXT: "col": 43,
209 // CHECK-NEXT: "tokLen": 15
210 // CHECK-NEXT: },
211 // CHECK-NEXT: "range": {
212 // CHECK-NEXT: "begin": {
213 // CHECK-NEXT: "offset": 323,
214 // CHECK-NEXT: "col": 1,
215 // CHECK-NEXT: "tokLen": 13
216 // CHECK-NEXT: },
217 // CHECK-NEXT: "end": {
218 // CHECK-NEXT: "offset": 365,
219 // CHECK-NEXT: "col": 43,
220 // CHECK-NEXT: "tokLen": 15
221 // CHECK-NEXT: }
222 // CHECK-NEXT: },
223 // CHECK-NEXT: "name": "deprecated_var1",
224 // CHECK-NEXT: "mangledName": "deprecated_var1",
225 // CHECK-NEXT: "type": {
226 // CHECK-NEXT: "qualType": "int"
227 // CHECK-NEXT: },
228 // CHECK-NEXT: "inner": [
229 // CHECK-NEXT: {
230 // CHECK-NEXT: "id": "0x{{.*}}",
231 // CHECK-NEXT: "kind": "DeprecatedAttr",
232 // CHECK-NEXT: "range": {
233 // CHECK-NEXT: "begin": {
234 // CHECK-NEXT: "offset": 338,
235 // CHECK-NEXT: "col": 16,
236 // CHECK-NEXT: "tokLen": 10
237 // CHECK-NEXT: },
238 // CHECK-NEXT: "end": {
239 // CHECK-NEXT: "offset": 357,
240 // CHECK-NEXT: "col": 35,
241 // CHECK-NEXT: "tokLen": 1
242 // CHECK-NEXT: }
243 // CHECK-NEXT: },
244 // CHECK-NEXT: "message": "reason"
245 // CHECK-NEXT: }
246 // CHECK-NEXT: ]
247 // CHECK-NEXT: }
250 // CHECK-NOT: {{^}}Dumping
251 // CHECK: "kind": "VarDecl",
252 // CHECK-NEXT: "loc": {
253 // CHECK-NEXT: "offset": 439,
254 // CHECK-NEXT: "line": 13,
255 // CHECK-NEXT: "col": 58,
256 // CHECK-NEXT: "tokLen": 15
257 // CHECK-NEXT: },
258 // CHECK-NEXT: "range": {
259 // CHECK-NEXT: "begin": {
260 // CHECK-NEXT: "offset": 382,
261 // CHECK-NEXT: "col": 1,
262 // CHECK-NEXT: "tokLen": 13
263 // CHECK-NEXT: },
264 // CHECK-NEXT: "end": {
265 // CHECK-NEXT: "offset": 439,
266 // CHECK-NEXT: "col": 58,
267 // CHECK-NEXT: "tokLen": 15
268 // CHECK-NEXT: }
269 // CHECK-NEXT: },
270 // CHECK-NEXT: "name": "deprecated_var2",
271 // CHECK-NEXT: "mangledName": "deprecated_var2",
272 // CHECK-NEXT: "type": {
273 // CHECK-NEXT: "qualType": "int"
274 // CHECK-NEXT: },
275 // CHECK-NEXT: "inner": [
276 // CHECK-NEXT: {
277 // CHECK-NEXT: "id": "0x{{.*}}",
278 // CHECK-NEXT: "kind": "DeprecatedAttr",
279 // CHECK-NEXT: "range": {
280 // CHECK-NEXT: "begin": {
281 // CHECK-NEXT: "offset": 397,
282 // CHECK-NEXT: "col": 16,
283 // CHECK-NEXT: "tokLen": 10
284 // CHECK-NEXT: },
285 // CHECK-NEXT: "end": {
286 // CHECK-NEXT: "offset": 431,
287 // CHECK-NEXT: "col": 50,
288 // CHECK-NEXT: "tokLen": 1
289 // CHECK-NEXT: }
290 // CHECK-NEXT: },
291 // CHECK-NEXT: "message": "reason",
292 // CHECK-NEXT: "replacement": "replacement"
293 // CHECK-NEXT: }
294 // CHECK-NEXT: ]
295 // CHECK-NEXT: }
298 // CHECK-NOT: {{^}}Dumping
299 // CHECK: "kind": "VarDecl",
300 // CHECK-NEXT: "loc": {
301 // CHECK-NEXT: "offset": 490,
302 // CHECK-NEXT: "line": 15,
303 // CHECK-NEXT: "col": 34,
304 // CHECK-NEXT: "tokLen": 16
305 // CHECK-NEXT: },
306 // CHECK-NEXT: "range": {
307 // CHECK-NEXT: "begin": {
308 // CHECK-NEXT: "offset": 457,
309 // CHECK-NEXT: "col": 1,
310 // CHECK-NEXT: "tokLen": 13
311 // CHECK-NEXT: },
312 // CHECK-NEXT: "end": {
313 // CHECK-NEXT: "offset": 490,
314 // CHECK-NEXT: "col": 34,
315 // CHECK-NEXT: "tokLen": 16
316 // CHECK-NEXT: }
317 // CHECK-NEXT: },
318 // CHECK-NEXT: "name": "unavailable_var0",
319 // CHECK-NEXT: "mangledName": "unavailable_var0",
320 // CHECK-NEXT: "type": {
321 // CHECK-NEXT: "qualType": "int"
322 // CHECK-NEXT: },
323 // CHECK-NEXT: "inner": [
324 // CHECK-NEXT: {
325 // CHECK-NEXT: "id": "0x{{.*}}",
326 // CHECK-NEXT: "kind": "UnavailableAttr",
327 // CHECK-NEXT: "range": {
328 // CHECK-NEXT: "begin": {
329 // CHECK-NEXT: "offset": 472,
330 // CHECK-NEXT: "col": 16,
331 // CHECK-NEXT: "tokLen": 11
332 // CHECK-NEXT: },
333 // CHECK-NEXT: "end": {
334 // CHECK-NEXT: "offset": 472,
335 // CHECK-NEXT: "col": 16,
336 // CHECK-NEXT: "tokLen": 11
337 // CHECK-NEXT: }
338 // CHECK-NEXT: }
339 // CHECK-NEXT: }
340 // CHECK-NEXT: ]
341 // CHECK-NEXT: }
344 // CHECK-NOT: {{^}}Dumping
345 // CHECK: "kind": "VarDecl",
346 // CHECK-NEXT: "loc": {
347 // CHECK-NEXT: "offset": 551,
348 // CHECK-NEXT: "line": 16,
349 // CHECK-NEXT: "col": 44,
350 // CHECK-NEXT: "tokLen": 16
351 // CHECK-NEXT: },
352 // CHECK-NEXT: "range": {
353 // CHECK-NEXT: "begin": {
354 // CHECK-NEXT: "offset": 508,
355 // CHECK-NEXT: "col": 1,
356 // CHECK-NEXT: "tokLen": 13
357 // CHECK-NEXT: },
358 // CHECK-NEXT: "end": {
359 // CHECK-NEXT: "offset": 551,
360 // CHECK-NEXT: "col": 44,
361 // CHECK-NEXT: "tokLen": 16
362 // CHECK-NEXT: }
363 // CHECK-NEXT: },
364 // CHECK-NEXT: "name": "unavailable_var1",
365 // CHECK-NEXT: "mangledName": "unavailable_var1",
366 // CHECK-NEXT: "type": {
367 // CHECK-NEXT: "qualType": "int"
368 // CHECK-NEXT: },
369 // CHECK-NEXT: "inner": [
370 // CHECK-NEXT: {
371 // CHECK-NEXT: "id": "0x{{.*}}",
372 // CHECK-NEXT: "kind": "UnavailableAttr",
373 // CHECK-NEXT: "range": {
374 // CHECK-NEXT: "begin": {
375 // CHECK-NEXT: "offset": 523,
376 // CHECK-NEXT: "col": 16,
377 // CHECK-NEXT: "tokLen": 11
378 // CHECK-NEXT: },
379 // CHECK-NEXT: "end": {
380 // CHECK-NEXT: "offset": 543,
381 // CHECK-NEXT: "col": 36,
382 // CHECK-NEXT: "tokLen": 1
383 // CHECK-NEXT: }
384 // CHECK-NEXT: },
385 // CHECK-NEXT: "message": "reason"
386 // CHECK-NEXT: }
387 // CHECK-NEXT: ]
388 // CHECK-NEXT: }
391 // CHECK-NOT: {{^}}Dumping
392 // CHECK: "kind": "VarDecl",
393 // CHECK-NEXT: "loc": {
394 // CHECK-NEXT: "offset": 617,
395 // CHECK-NEXT: "line": 18,
396 // CHECK-NEXT: "col": 48,
397 // CHECK-NEXT: "tokLen": 11
398 // CHECK-NEXT: },
399 // CHECK-NEXT: "range": {
400 // CHECK-NEXT: "begin": {
401 // CHECK-NEXT: "offset": 570,
402 // CHECK-NEXT: "col": 1,
403 // CHECK-NEXT: "tokLen": 13
404 // CHECK-NEXT: },
405 // CHECK-NEXT: "end": {
406 // CHECK-NEXT: "offset": 617,
407 // CHECK-NEXT: "col": 48,
408 // CHECK-NEXT: "tokLen": 11
409 // CHECK-NEXT: }
410 // CHECK-NEXT: },
411 // CHECK-NEXT: "name": "section_var",
412 // CHECK-NEXT: "mangledName": "section_var",
413 // CHECK-NEXT: "type": {
414 // CHECK-NEXT: "qualType": "int"
415 // CHECK-NEXT: },
416 // CHECK-NEXT: "inner": [
417 // CHECK-NEXT: {
418 // CHECK-NEXT: "id": "0x{{.*}}",
419 // CHECK-NEXT: "kind": "SectionAttr",
420 // CHECK-NEXT: "range": {
421 // CHECK-NEXT: "begin": {
422 // CHECK-NEXT: "offset": 586,
423 // CHECK-NEXT: "col": 17,
424 // CHECK-NEXT: "tokLen": 7
425 // CHECK-NEXT: },
426 // CHECK-NEXT: "end": {
427 // CHECK-NEXT: "offset": 609,
428 // CHECK-NEXT: "col": 40,
429 // CHECK-NEXT: "tokLen": 1
430 // CHECK-NEXT: }
431 // CHECK-NEXT: },
432 // CHECK-NEXT: "section_name": "SECTION_NAME"
433 // CHECK-NEXT: }
434 // CHECK-NEXT: ]
435 // CHECK-NEXT: }
438 // CHECK-NOT: {{^}}Dumping
439 // CHECK: "kind": "VarDecl",
440 // CHECK-NEXT: "loc": {
441 // CHECK-NEXT: "offset": 675,
442 // CHECK-NEXT: "line": 20,
443 // CHECK-NEXT: "col": 45,
444 // CHECK-NEXT: "tokLen": 14
445 // CHECK-NEXT: },
446 // CHECK-NEXT: "range": {
447 // CHECK-NEXT: "begin": {
448 // CHECK-NEXT: "offset": 631,
449 // CHECK-NEXT: "col": 1,
450 // CHECK-NEXT: "tokLen": 13
451 // CHECK-NEXT: },
452 // CHECK-NEXT: "end": {
453 // CHECK-NEXT: "offset": 675,
454 // CHECK-NEXT: "col": 45,
455 // CHECK-NEXT: "tokLen": 14
456 // CHECK-NEXT: }
457 // CHECK-NEXT: },
458 // CHECK-NEXT: "name": "visibility_var",
459 // CHECK-NEXT: "mangledName": "visibility_var",
460 // CHECK-NEXT: "type": {
461 // CHECK-NEXT: "qualType": "int"
462 // CHECK-NEXT: },
463 // CHECK-NEXT: "inner": [
464 // CHECK-NEXT: {
465 // CHECK-NEXT: "id": "0x{{.*}}",
466 // CHECK-NEXT: "kind": "VisibilityAttr",
467 // CHECK-NEXT: "range": {
468 // CHECK-NEXT: "begin": {
469 // CHECK-NEXT: "offset": 647,
470 // CHECK-NEXT: "col": 17,
471 // CHECK-NEXT: "tokLen": 10
472 // CHECK-NEXT: },
473 // CHECK-NEXT: "end": {
474 // CHECK-NEXT: "offset": 667,
475 // CHECK-NEXT: "col": 37,
476 // CHECK-NEXT: "tokLen": 1
477 // CHECK-NEXT: }
478 // CHECK-NEXT: },
479 // CHECK-NEXT: "visibility": "hidden"
480 // CHECK-NEXT: }
481 // CHECK-NEXT: ]
482 // CHECK-NEXT: }
485 // CHECK-NOT: {{^}}Dumping
486 // CHECK: "kind": "VarDecl",
487 // CHECK-NEXT: "loc": {
488 // CHECK-NEXT: "offset": 748,
489 // CHECK-NEXT: "line": 22,
490 // CHECK-NEXT: "col": 57,
491 // CHECK-NEXT: "tokLen": 13
492 // CHECK-NEXT: },
493 // CHECK-NEXT: "range": {
494 // CHECK-NEXT: "begin": {
495 // CHECK-NEXT: "offset": 692,
496 // CHECK-NEXT: "col": 1,
497 // CHECK-NEXT: "tokLen": 8
498 // CHECK-NEXT: },
499 // CHECK-NEXT: "end": {
500 // CHECK-NEXT: "offset": 748,
501 // CHECK-NEXT: "col": 57,
502 // CHECK-NEXT: "tokLen": 13
503 // CHECK-NEXT: }
504 // CHECK-NEXT: },
505 // CHECK-NEXT: "name": "tls_model_var",
506 // CHECK-NEXT: "mangledName": "tls_model_var",
507 // CHECK-NEXT: "type": {
508 // CHECK-NEXT: "qualType": "int"
509 // CHECK-NEXT: },
510 // CHECK-NEXT: "tls": "static",
511 // CHECK-NEXT: "inner": [
512 // CHECK-NEXT: {
513 // CHECK-NEXT: "id": "0x{{.*}}",
514 // CHECK-NEXT: "kind": "TLSModelAttr",
515 // CHECK-NEXT: "range": {
516 // CHECK-NEXT: "begin": {
517 // CHECK-NEXT: "offset": 717,
518 // CHECK-NEXT: "col": 26,
519 // CHECK-NEXT: "tokLen": 9
520 // CHECK-NEXT: },
521 // CHECK-NEXT: "end": {
522 // CHECK-NEXT: "offset": 740,
523 // CHECK-NEXT: "col": 49,
524 // CHECK-NEXT: "tokLen": 1
525 // CHECK-NEXT: }
526 // CHECK-NEXT: },
527 // CHECK-NEXT: "tls_model": "local-exec"
528 // CHECK-NEXT: }
529 // CHECK-NEXT: ]
530 // CHECK-NEXT: }