xref: /aosp_15_r20/external/clang/test/Sema/ast-print.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -ast-print | FileCheck %s
2*67e74705SXin Li // RUN: %clang_cc1 %s -ast-print | %clang_cc1 -fsyntax-only -
3*67e74705SXin Li 
4*67e74705SXin Li typedef void func_typedef();
5*67e74705SXin Li func_typedef xxx;
6*67e74705SXin Li 
7*67e74705SXin Li typedef void func_t(int x);
8*67e74705SXin Li func_t a;
9*67e74705SXin Li 
10*67e74705SXin Li struct blah {
11*67e74705SXin Li   struct {
12*67e74705SXin Li     struct {
13*67e74705SXin Li       int b;
14*67e74705SXin Li     };
15*67e74705SXin Li   };
16*67e74705SXin Li };
17*67e74705SXin Li 
foo(const struct blah * b)18*67e74705SXin Li int foo(const struct blah *b) {
19*67e74705SXin Li   // CHECK: return b->b;
20*67e74705SXin Li   return b->b;
21*67e74705SXin Li }
22*67e74705SXin Li 
arr(int a[static3])23*67e74705SXin Li int arr(int a[static 3]) {
24*67e74705SXin Li   // CHECK: int a[static 3]
25*67e74705SXin Li   return a[2];
26*67e74705SXin Li }
27*67e74705SXin Li 
rarr(int a[restrict static3])28*67e74705SXin Li int rarr(int a[restrict static 3]) {
29*67e74705SXin Li   // CHECK: int a[restrict static 3]
30*67e74705SXin Li   return a[2];
31*67e74705SXin Li }
32*67e74705SXin Li 
varr(int n,int a[static n])33*67e74705SXin Li int varr(int n, int a[static n]) {
34*67e74705SXin Li   // CHECK: int a[static n]
35*67e74705SXin Li   return a[2];
36*67e74705SXin Li }
37*67e74705SXin Li 
rvarr(int n,int a[restrict static n])38*67e74705SXin Li int rvarr(int n, int a[restrict static n]) {
39*67e74705SXin Li   // CHECK: int a[restrict static n]
40*67e74705SXin Li   return a[2];
41*67e74705SXin Li }
42*67e74705SXin Li 
43*67e74705SXin Li // CHECK: typedef struct {
44*67e74705SXin Li typedef struct {
45*67e74705SXin Li   int f;
46*67e74705SXin Li } T __attribute__ ((__aligned__));
47*67e74705SXin Li 
48*67e74705SXin Li // CHECK: struct __attribute__((visibility("default"))) S;
49*67e74705SXin Li struct __attribute__((visibility("default"))) S;
50*67e74705SXin Li 
51*67e74705SXin Li struct pair_t {
52*67e74705SXin Li   int a;
53*67e74705SXin Li   int b;
54*67e74705SXin Li };
55*67e74705SXin Li 
56*67e74705SXin Li // CHECK: struct pair_t p = {a: 3, .b = 4};
57*67e74705SXin Li struct pair_t p = {a: 3, .b = 4};
58*67e74705SXin Li 
initializers()59*67e74705SXin Li void initializers() {
60*67e74705SXin Li   // CHECK: int *x = ((void *)0), *y = ((void *)0);
61*67e74705SXin Li   int *x = ((void *)0), *y = ((void *)0);
62*67e74705SXin Li   struct Z{};
63*67e74705SXin Li   struct {
64*67e74705SXin Li     struct Z z;
65*67e74705SXin Li   // CHECK: } z = {(struct Z){}};
66*67e74705SXin Li   } z = {(struct Z){}};
67*67e74705SXin Li }
68