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