blob: 4c0aef5b2f3fc2a5d8b962ab1aeffc8e517dd806 [file] [log] [blame]
David Blaikie8fab8e52012-11-12 19:12:12 +00001// RUN: %clang_cc1 %s -ast-print | FileCheck %s
Steven Watanabe9359b8f2016-03-18 21:35:59 +00002// RUN: %clang_cc1 %s -ast-print | %clang_cc1 -fsyntax-only -
Chris Lattnere5a91b42007-12-03 21:43:25 +00003
4typedef void func_typedef();
5func_typedef xxx;
6
Chris Lattnerb36a98e2007-12-06 17:20:20 +00007typedef void func_t(int x);
8func_t a;
Chris Lattnere5a91b42007-12-03 21:43:25 +00009
David Blaikie8fab8e52012-11-12 19:12:12 +000010struct blah {
11 struct {
12 struct {
13 int b;
14 };
15 };
16};
17
18int foo(const struct blah *b) {
19 // CHECK: return b->b;
20 return b->b;
21}
Hal Finkelf3e02652014-07-18 23:19:20 +000022
23int arr(int a[static 3]) {
24 // CHECK: int a[static 3]
25 return a[2];
26}
27
Hal Finkelbfe2d3c2014-07-19 02:01:03 +000028int rarr(int a[restrict static 3]) {
29 // CHECK: int a[restrict static 3]
30 return a[2];
31}
32
Hal Finkelf3e02652014-07-18 23:19:20 +000033int varr(int n, int a[static n]) {
34 // CHECK: int a[static n]
35 return a[2];
36}
37
Hal Finkelbfe2d3c2014-07-19 02:01:03 +000038int rvarr(int n, int a[restrict static n]) {
39 // CHECK: int a[restrict static n]
40 return a[2];
41}
42
Steven Watanabe9359b8f2016-03-18 21:35:59 +000043// CHECK: typedef struct {
Aaron Ballmanc960f562014-08-01 13:49:00 +000044typedef struct {
45 int f;
46} T __attribute__ ((__aligned__));
Aaron Ballman53885382014-09-15 16:45:30 +000047
48// CHECK: struct __attribute__((visibility("default"))) S;
49struct __attribute__((visibility("default"))) S;
Justin Bognercb337032015-05-28 22:19:36 +000050
51struct pair_t {
52 int a;
53 int b;
54};
55
56// CHECK: struct pair_t p = {a: 3, .b = 4};
57struct pair_t p = {a: 3, .b = 4};
Benjamin Kramer54f81ed2016-01-25 10:34:06 +000058
59void initializers() {
60 // CHECK: int *x = ((void *)0), *y = ((void *)0);
61 int *x = ((void *)0), *y = ((void *)0);
62 struct Z{};
63 struct {
64 struct Z z;
65 // CHECK: } z = {(struct Z){}};
66 } z = {(struct Z){}};
67}