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
6 #pragma STDC FENV_ROUND FE_UPWARD
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
24 // CHECK-NEXT: "end": {
25 // CHECK-NEXT: "offset": 249,
26 // CHECK-NEXT: "line": 10,
27 // CHECK-NEXT: "col": 1,
28 // CHECK-NEXT: "tokLen": 1
31 // CHECK-NEXT: "fpoptions": {
32 // CHECK-NEXT: "ConstRoundingMode": 0
34 // CHECK-NEXT: "inner": [
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
45 // CHECK-NEXT: "end": {
46 // CHECK-NEXT: "offset": 231,
47 // CHECK-NEXT: "line": 8,
48 // CHECK-NEXT: "col": 3,
49 // CHECK-NEXT: "tokLen": 1
52 // CHECK-NEXT: "inner": [
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
63 // CHECK-NEXT: "end": {
64 // CHECK-NEXT: "offset": 168,
65 // CHECK-NEXT: "col": 11,
66 // CHECK-NEXT: "tokLen": 1
69 // CHECK-NEXT: "type": {
70 // CHECK-NEXT: "qualType": "int"
72 // CHECK-NEXT: "valueCategory": "prvalue",
73 // CHECK-NEXT: "opcode": "<",
74 // CHECK-NEXT: "inner": [
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
84 // CHECK-NEXT: "end": {
85 // CHECK-NEXT: "offset": 164,
86 // CHECK-NEXT: "col": 7,
87 // CHECK-NEXT: "tokLen": 1
90 // CHECK-NEXT: "type": {
91 // CHECK-NEXT: "qualType": "float"
93 // CHECK-NEXT: "valueCategory": "prvalue",
94 // CHECK-NEXT: "castKind": "LValueToRValue",
95 // CHECK-NEXT: "inner": [
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
105 // CHECK-NEXT: "end": {
106 // CHECK-NEXT: "offset": 164,
107 // CHECK-NEXT: "col": 7,
108 // CHECK-NEXT: "tokLen": 1
111 // CHECK-NEXT: "type": {
112 // CHECK-NEXT: "qualType": "float"
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"
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
135 // CHECK-NEXT: "end": {
136 // CHECK-NEXT: "offset": 168,
137 // CHECK-NEXT: "col": 11,
138 // CHECK-NEXT: "tokLen": 1
141 // CHECK-NEXT: "type": {
142 // CHECK-NEXT: "qualType": "float"
144 // CHECK-NEXT: "valueCategory": "prvalue",
145 // CHECK-NEXT: "castKind": "IntegralToFloating",
146 // CHECK-NEXT: "inner": [
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
156 // CHECK-NEXT: "end": {
157 // CHECK-NEXT: "offset": 168,
158 // CHECK-NEXT: "col": 11,
159 // CHECK-NEXT: "tokLen": 1
162 // CHECK-NEXT: "type": {
163 // CHECK-NEXT: "qualType": "int"
165 // CHECK-NEXT: "valueCategory": "prvalue",
166 // CHECK-NEXT: "value": "0"
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
181 // CHECK-NEXT: "end": {
182 // CHECK-NEXT: "offset": 231,
183 // CHECK-NEXT: "line": 8,
184 // CHECK-NEXT: "col": 3,
185 // CHECK-NEXT: "tokLen": 1
188 // CHECK-NEXT: "fpoptions": {
189 // CHECK-NEXT: "ConstRoundingMode": 2
191 // CHECK-NEXT: "inner": [
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
202 // CHECK-NEXT: "end": {
203 // CHECK-NEXT: "offset": 226,
204 // CHECK-NEXT: "col": 16,
205 // CHECK-NEXT: "tokLen": 1
208 // CHECK-NEXT: "inner": [
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
218 // CHECK-NEXT: "end": {
219 // CHECK-NEXT: "offset": 226,
220 // CHECK-NEXT: "col": 16,
221 // CHECK-NEXT: "tokLen": 1
224 // CHECK-NEXT: "type": {
225 // CHECK-NEXT: "qualType": "float"
227 // CHECK-NEXT: "valueCategory": "prvalue",
228 // CHECK-NEXT: "opcode": "-",
229 // CHECK-NEXT: "inner": [
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
239 // CHECK-NEXT: "end": {
240 // CHECK-NEXT: "offset": 222,
241 // CHECK-NEXT: "col": 12,
242 // CHECK-NEXT: "tokLen": 1
245 // CHECK-NEXT: "type": {
246 // CHECK-NEXT: "qualType": "float"
248 // CHECK-NEXT: "valueCategory": "prvalue",
249 // CHECK-NEXT: "castKind": "LValueToRValue",
250 // CHECK-NEXT: "inner": [
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
260 // CHECK-NEXT: "end": {
261 // CHECK-NEXT: "offset": 222,
262 // CHECK-NEXT: "col": 12,
263 // CHECK-NEXT: "tokLen": 1
266 // CHECK-NEXT: "type": {
267 // CHECK-NEXT: "qualType": "float"
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"
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
290 // CHECK-NEXT: "end": {
291 // CHECK-NEXT: "offset": 226,
292 // CHECK-NEXT: "col": 16,
293 // CHECK-NEXT: "tokLen": 1
296 // CHECK-NEXT: "type": {
297 // CHECK-NEXT: "qualType": "float"
299 // CHECK-NEXT: "valueCategory": "prvalue",
300 // CHECK-NEXT: "castKind": "LValueToRValue",
301 // CHECK-NEXT: "inner": [
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
311 // CHECK-NEXT: "end": {
312 // CHECK-NEXT: "offset": 226,
313 // CHECK-NEXT: "col": 16,
314 // CHECK-NEXT: "tokLen": 1
317 // CHECK-NEXT: "type": {
318 // CHECK-NEXT: "qualType": "float"
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"
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
350 // CHECK-NEXT: "end": {
351 // CHECK-NEXT: "offset": 246,
352 // CHECK-NEXT: "col": 14,
353 // CHECK-NEXT: "tokLen": 1
356 // CHECK-NEXT: "inner": [
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
366 // CHECK-NEXT: "end": {
367 // CHECK-NEXT: "offset": 246,
368 // CHECK-NEXT: "col": 14,
369 // CHECK-NEXT: "tokLen": 1
372 // CHECK-NEXT: "type": {
373 // CHECK-NEXT: "qualType": "float"
375 // CHECK-NEXT: "valueCategory": "prvalue",
376 // CHECK-NEXT: "opcode": "+",
377 // CHECK-NEXT: "inner": [
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
387 // CHECK-NEXT: "end": {
388 // CHECK-NEXT: "offset": 242,
389 // CHECK-NEXT: "col": 10,
390 // CHECK-NEXT: "tokLen": 1
393 // CHECK-NEXT: "type": {
394 // CHECK-NEXT: "qualType": "float"
396 // CHECK-NEXT: "valueCategory": "prvalue",
397 // CHECK-NEXT: "castKind": "LValueToRValue",
398 // CHECK-NEXT: "inner": [
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
408 // CHECK-NEXT: "end": {
409 // CHECK-NEXT: "offset": 242,
410 // CHECK-NEXT: "col": 10,
411 // CHECK-NEXT: "tokLen": 1
414 // CHECK-NEXT: "type": {
415 // CHECK-NEXT: "qualType": "float"
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"
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
438 // CHECK-NEXT: "end": {
439 // CHECK-NEXT: "offset": 246,
440 // CHECK-NEXT: "col": 14,
441 // CHECK-NEXT: "tokLen": 1
444 // CHECK-NEXT: "type": {
445 // CHECK-NEXT: "qualType": "float"
447 // CHECK-NEXT: "valueCategory": "prvalue",
448 // CHECK-NEXT: "castKind": "LValueToRValue",
449 // CHECK-NEXT: "inner": [
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
459 // CHECK-NEXT: "end": {
460 // CHECK-NEXT: "offset": 246,
461 // CHECK-NEXT: "col": 14,
462 // CHECK-NEXT: "tokLen": 1
465 // CHECK-NEXT: "type": {
466 // CHECK-NEXT: "qualType": "float"
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"