llvm/clang/test/AST/ast-dump-atomic-json.c

// RUN: %clang_cc1 -triple x86_64-pc-linux -Wno-unused-value -ast-dump=json %s | FileCheck %s

int foo(int * ptr) {
  return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
}

// NOTE: CHECK lines have *not* been autogenerated by gen_ast_dump_json_test.py
// as its output is not portable for AtomicExpr across platforms. Instead rely
// on loose CHECKS.


// CHECK-NOT: {{^}}Dumping
// CHECK:  "kind": "AtomicExpr",
// CHECK:  "type": {
// CHECK:   "qualType": "int"
// CHECK:  },
// CHECK:  "valueCategory": "prvalue",
// CHECK:  "name": "__atomic_load_n",
// CHECK:  "inner": [
// CHECK:   {
// CHECK:    "id": "0x{{.*}}",
// CHECK:    "kind": "ImplicitCastExpr",
// CHECK:    },
// CHECK:    "type": {
// CHECK:     "qualType": "int *"
// CHECK:    },
// CHECK:    "valueCategory": "prvalue",
// CHECK:    "castKind": "LValueToRValue",
// CHECK:    "inner": [
// CHECK:     {
// CHECK:      "id": "0x{{.*}}",
// CHECK:      "kind": "DeclRefExpr",
// CHECK:      },
// CHECK:      "type": {
// CHECK:       "qualType": "int *"
// CHECK:      },
// CHECK:      "valueCategory": "lvalue",
// CHECK:      "referencedDecl": {
// CHECK:       "id": "0x{{.*}}",
// CHECK:       "kind": "ParmVarDecl",
// CHECK:       "name": "ptr",
// CHECK:       "type": {
// CHECK:        "qualType": "int *"
// CHECK:       }
// CHECK:      }
// CHECK:     }
// CHECK:    ]
// CHECK:   },
// CHECK:   {
// CHECK:    "id": "0x{{.*}}",
// CHECK:    "kind": "IntegerLiteral",
// CHECK:    },
// CHECK:    "type": {
// CHECK:     "qualType": "int"
// CHECK:    },
// CHECK:    "valueCategory": "prvalue",
// CHECK:    "value": "5"
// CHECK:   }
// CHECK:  ]
// CHECK: }