486 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s2 3float func_16(float x, float y) {4 #pragma STDC FENV_ROUND FE_TOWARDZERO5 if (x < 0) {6 #pragma STDC FENV_ROUND FE_UPWARD7 return x - y;8 }9 return x + y;10}11 12// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py13// using --filters=CompoundStmt14 15 16// CHECK-NOT: {{^}}Dumping17// 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": 123// 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": 129// CHECK-NEXT: }30// CHECK-NEXT: },31// CHECK-NEXT: "fpoptions": {32// CHECK-NEXT: "ConstRoundingMode": 033// 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": 244// 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": 150// 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": 162// CHECK-NEXT: },63// CHECK-NEXT: "end": {64// CHECK-NEXT: "offset": 168,65// CHECK-NEXT: "col": 11,66// CHECK-NEXT: "tokLen": 167// 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": 183// CHECK-NEXT: },84// CHECK-NEXT: "end": {85// CHECK-NEXT: "offset": 164,86// CHECK-NEXT: "col": 7,87// CHECK-NEXT: "tokLen": 188// 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": 1104// CHECK-NEXT: },105// CHECK-NEXT: "end": {106// CHECK-NEXT: "offset": 164,107// CHECK-NEXT: "col": 7,108// CHECK-NEXT: "tokLen": 1109// 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": 1134// CHECK-NEXT: },135// CHECK-NEXT: "end": {136// CHECK-NEXT: "offset": 168,137// CHECK-NEXT: "col": 11,138// CHECK-NEXT: "tokLen": 1139// 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": 1155// CHECK-NEXT: },156// CHECK-NEXT: "end": {157// CHECK-NEXT: "offset": 168,158// CHECK-NEXT: "col": 11,159// CHECK-NEXT: "tokLen": 1160// 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": 1180// 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": 1186// CHECK-NEXT: }187// CHECK-NEXT: },188// CHECK-NEXT: "fpoptions": {189// CHECK-NEXT: "ConstRoundingMode": 2190// 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": 6201// CHECK-NEXT: },202// CHECK-NEXT: "end": {203// CHECK-NEXT: "offset": 226,204// CHECK-NEXT: "col": 16,205// CHECK-NEXT: "tokLen": 1206// 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": 1217// CHECK-NEXT: },218// CHECK-NEXT: "end": {219// CHECK-NEXT: "offset": 226,220// CHECK-NEXT: "col": 16,221// CHECK-NEXT: "tokLen": 1222// 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": 1238// CHECK-NEXT: },239// CHECK-NEXT: "end": {240// CHECK-NEXT: "offset": 222,241// CHECK-NEXT: "col": 12,242// CHECK-NEXT: "tokLen": 1243// 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": 1259// CHECK-NEXT: },260// CHECK-NEXT: "end": {261// CHECK-NEXT: "offset": 222,262// CHECK-NEXT: "col": 12,263// CHECK-NEXT: "tokLen": 1264// 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": 1289// CHECK-NEXT: },290// CHECK-NEXT: "end": {291// CHECK-NEXT: "offset": 226,292// CHECK-NEXT: "col": 16,293// CHECK-NEXT: "tokLen": 1294// 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": 1310// CHECK-NEXT: },311// CHECK-NEXT: "end": {312// CHECK-NEXT: "offset": 226,313// CHECK-NEXT: "col": 16,314// CHECK-NEXT: "tokLen": 1315// 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": 6349// CHECK-NEXT: },350// CHECK-NEXT: "end": {351// CHECK-NEXT: "offset": 246,352// CHECK-NEXT: "col": 14,353// CHECK-NEXT: "tokLen": 1354// 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": 1365// CHECK-NEXT: },366// CHECK-NEXT: "end": {367// CHECK-NEXT: "offset": 246,368// CHECK-NEXT: "col": 14,369// CHECK-NEXT: "tokLen": 1370// 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": 1386// CHECK-NEXT: },387// CHECK-NEXT: "end": {388// CHECK-NEXT: "offset": 242,389// CHECK-NEXT: "col": 10,390// CHECK-NEXT: "tokLen": 1391// 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": 1407// CHECK-NEXT: },408// CHECK-NEXT: "end": {409// CHECK-NEXT: "offset": 242,410// CHECK-NEXT: "col": 10,411// CHECK-NEXT: "tokLen": 1412// 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": 1437// CHECK-NEXT: },438// CHECK-NEXT: "end": {439// CHECK-NEXT: "offset": 246,440// CHECK-NEXT: "col": 14,441// CHECK-NEXT: "tokLen": 1442// 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": 1458// CHECK-NEXT: },459// CHECK-NEXT: "end": {460// CHECK-NEXT: "offset": 246,461// CHECK-NEXT: "col": 14,462// CHECK-NEXT: "tokLen": 1463// 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