xref: /llvm-project/clang/test/AST/ast-dump-pragma-json.c (revision f7819ce166bcc472108cf7c05f86edcf4ee9e6cf)
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
2 
func_16(float x,float y)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;
8   }
9   return x + y;
10 }
11 
12 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
13 // using --filters=CompoundStmt
14 
15 
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: }
486