1 // RUN: %clang_cc1 -ast-dump %s | FileCheck %s 2 3 template<int N = 0> 4 void pr43370() { 5 int arr[2]; 6 __atomic_store_n(arr, 0, 5); 7 } 8 9 template<int N = 0> 10 void foo() { 11 int arr[2]; 12 (void)__atomic_compare_exchange_n(arr, arr, 1, 0, 3, 4); 13 } 14 15 void useage(){ 16 pr43370(); 17 foo(); 18 } 19 20 // CHECK:FunctionTemplateDecl 0x{{[0-9a-f]+}} <{{[^,]+}}, line:7:1> line:4:6 pr43370 21 // CHECK: AtomicExpr 22 // CHECK-NEXT: ImplicitCastExpr 23 // CHECK-SAME: <ArrayToPointerDecay> 24 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:20> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 25 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:28> 'int' 5 26 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:25> 'int' 0 27 // CHECK:FunctionDecl 0x{{[0-9a-f]+}} <line:4:1, line:7:1> line:4:6 used pr43370 28 // CHECK: AtomicExpr 29 // CHECK-NEXT: ImplicitCastExpr 30 // CHECK-SAME: <ArrayToPointerDecay> 31 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:20> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 32 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:28> 'int' 5 33 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:25> 'int' 0 34 35 // CHECK:FunctionTemplateDecl 0x{{[0-9a-f]+}} <line:9:1, line:13:1> line:10:6 foo 36 // CHECK: AtomicExpr 37 // CHECK-NEXT: ImplicitCastExpr 38 // CHECK-SAME: <ArrayToPointerDecay> 39 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:37> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 40 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:53> 'int' 3 41 // CHECK-NEXT: ImplicitCastExpr 42 // CHECK-SAME: <ArrayToPointerDecay> 43 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:42> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 44 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:56> 'int' 4 45 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:47> 'int' 1 46 // CHECK-NEXT: ImplicitCastExpr 47 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:50> 'int' 0 48 // CHECK:FunctionDecl 0x{{[0-9a-f]+}} <line:10:1, line:13:1> line:10:6 used foo 49 // CHECK: AtomicExpr 50 // CHECK-NEXT: ImplicitCastExpr 51 // CHECK-SAME: <ArrayToPointerDecay> 52 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:37> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 53 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:53> 'int' 3 54 // CHECK-NEXT: ImplicitCastExpr 55 // CHECK-SAME: <ArrayToPointerDecay> 56 // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-f]+}} <{{[^:]+}}:42> 'int [2]' lvalue Var 0x{{[0-9a-f]+}} 'arr' 'int [2]' 57 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:56> 'int' 4 58 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:47> 'int' 1 59 // CHECK-NEXT: ImplicitCastExpr 60 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-f]+}} <{{[^:]+}}:50> 'int' 0 61