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 Liint 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 Liint 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 Liint 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 Liint 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 Liint 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 Livoid 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