1 // { dg-do compile { target { { aarch64-*-* } && c++11 } } }
2 // { dg-options "" }
3
4 #include <stdarg.h>
5
6 template <int N>
7 struct alignas (16) A { char p[16]; };
8
9 A<0> v;
10
11 template <int N>
12 struct B
13 {
14 typedef A<N> T;
15 int i, j, k, l;
16 };
17
18 struct C : public B<0> {};
19 struct D {};
20 struct E : public D, C {};
21 struct F : public B<1> {};
22 struct G : public F { static int y alignas (16); };
23 struct H : public G {};
24 struct I : public D { int z alignas (16); };
25 struct J : public D { static int z alignas (16); int i, j, k, l; };
26
27 template <int N>
28 struct K : public D { typedef A<N> T; int i, j; };
29
30 struct L { static int h alignas (16); int i, j, k, l; };
31
32 int
fn1(int a,B<0> b)33 fn1 (int a, B<0> b)
34 {
35 return a + b.i;
36 }
37
38 int
fn2(int a,B<1> b)39 fn2 (int a, B<1> b)
40 {
41 return a + b.i;
42 }
43
44 int
fn3(int a,L b)45 fn3 (int a, L b)
46 {
47 return a + b.i;
48 }
49
50 int
fn4(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,B<0> n,...)51 fn4 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, B<0> n, ...)
52 {
53 va_list ap;
54 va_start (ap, n);
55 int x = va_arg (ap, int);
56 va_end (ap);
57 return x;
58 }
59
60 int
fn5(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,B<1> n,...)61 fn5 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, B<1> n, ...)
62 {
63 va_list ap;
64 va_start (ap, n);
65 int x = va_arg (ap, int);
66 va_end (ap);
67 return x;
68 }
69
70 int
fn6(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,C n,...)71 fn6 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, C n, ...)
72 {
73 va_list ap;
74 va_start (ap, n);
75 int x = va_arg (ap, int);
76 va_end (ap);
77 return x;
78 }
79
80 int
fn7(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,E n,...)81 fn7 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, E n, ...)
82 {
83 va_list ap;
84 va_start (ap, n);
85 int x = va_arg (ap, int);
86 va_end (ap);
87 return x;
88 }
89
90 int
fn8(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,H n,...)91 fn8 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, H n, ...)
92 {
93 va_list ap;
94 va_start (ap, n);
95 int x = va_arg (ap, int);
96 va_end (ap);
97 return x;
98 }
99
100 int
fn9(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,I n,...)101 fn9 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, I n, ...)
102 {
103 va_list ap;
104 va_start (ap, n);
105 int x = va_arg (ap, int);
106 va_end (ap);
107 return x;
108 }
109
110 int
fn10(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,J n,...)111 fn10 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, J n, ...)
112 {
113 va_list ap;
114 va_start (ap, n);
115 int x = va_arg (ap, int);
116 va_end (ap);
117 return x;
118 }
119
120 int
fn11(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,K<0> n,...)121 fn11 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, K<0> n, ...)
122 {
123 va_list ap;
124 va_start (ap, n);
125 int x = va_arg (ap, int);
126 va_end (ap);
127 return x;
128 }
129
130 int
fn12(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,int l,int m,K<2> n,...)131 fn12 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, K<2> n, ...)
132 {
133 va_list ap;
134 va_start (ap, n);
135 int x = va_arg (ap, int);
136 va_end (ap);
137 return x;
138 }
139
140 void
test()141 test ()
142 {
143 static B<0> b0;
144 static B<1> b1;
145 static L l;
146 static C c;
147 static E e;
148 static H h;
149 static I i;
150 static J j;
151 static K<0> k0;
152 static K<2> k2;
153 fn1 (1, b0);
154 fn2 (1, b1);
155 fn3 (1, l);
156 fn4 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, b0, 1, 2, 3, 4);
157 fn5 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, b1, 1, 2, 3, 4);
158 fn6 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, c, 1, 2, 3, 4);
159 fn7 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, e, 1, 2, 3, 4);
160 fn8 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, h, 1, 2, 3, 4);
161 fn9 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, i, 1, 2, 3, 4);
162 fn10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, j, 1, 2, 3, 4);
163 fn11 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, k0, 1, 2, 3, 4);
164 fn12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, k2, 1, 2, 3, 4);
165 }
166