xref: /llvm-project/clang/test/AST/ast-dump-atomic-json.c (revision 4198576157bfd0d08c08b784220d6132b709ae2c)
1 // RUN: %clang_cc1 -triple x86_64-pc-linux -Wno-unused-value -ast-dump=json %s | FileCheck %s
2 
foo(int * ptr)3 int foo(int * ptr) {
4   return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
5 }
6 
7 // NOTE: CHECK lines have *not* been autogenerated by gen_ast_dump_json_test.py
8 // as its output is not portable for AtomicExpr across platforms. Instead rely
9 // on loose CHECKS.
10 
11 
12 // CHECK-NOT: {{^}}Dumping
13 // CHECK:  "kind": "AtomicExpr",
14 // CHECK:  "type": {
15 // CHECK:   "qualType": "int"
16 // CHECK:  },
17 // CHECK:  "valueCategory": "prvalue",
18 // CHECK:  "name": "__atomic_load_n",
19 // CHECK:  "inner": [
20 // CHECK:   {
21 // CHECK:    "id": "0x{{.*}}",
22 // CHECK:    "kind": "ImplicitCastExpr",
23 // CHECK:    },
24 // CHECK:    "type": {
25 // CHECK:     "qualType": "int *"
26 // CHECK:    },
27 // CHECK:    "valueCategory": "prvalue",
28 // CHECK:    "castKind": "LValueToRValue",
29 // CHECK:    "inner": [
30 // CHECK:     {
31 // CHECK:      "id": "0x{{.*}}",
32 // CHECK:      "kind": "DeclRefExpr",
33 // CHECK:      },
34 // CHECK:      "type": {
35 // CHECK:       "qualType": "int *"
36 // CHECK:      },
37 // CHECK:      "valueCategory": "lvalue",
38 // CHECK:      "referencedDecl": {
39 // CHECK:       "id": "0x{{.*}}",
40 // CHECK:       "kind": "ParmVarDecl",
41 // CHECK:       "name": "ptr",
42 // CHECK:       "type": {
43 // CHECK:        "qualType": "int *"
44 // CHECK:       }
45 // CHECK:      }
46 // CHECK:     }
47 // CHECK:    ]
48 // CHECK:   },
49 // CHECK:   {
50 // CHECK:    "id": "0x{{.*}}",
51 // CHECK:    "kind": "IntegerLiteral",
52 // CHECK:    },
53 // CHECK:    "type": {
54 // CHECK:     "qualType": "int"
55 // CHECK:    },
56 // CHECK:    "valueCategory": "prvalue",
57 // CHECK:    "value": "5"
58 // CHECK:   }
59 // CHECK:  ]
60 // CHECK: }
61