blob: 09e7e4e37332e165fe3284b676881e8d26cd2d10 [file] [log] [blame]
Anders Carlsson1345bd22009-09-24 03:22:10 +00001// RUN: clang-cc -triple x86_64-unknown-unknown %s -fsyntax-only -verify
2
3#define SA(n, p) int a##n[(p) ? 1 : -1]
4
5struct A { int a; };
6SA(0, sizeof(A) == 4);
7
8struct B { };
9SA(1, sizeof(B) == 1);
10
11struct C : A, B { };
12SA(2, sizeof(C) == 4);
Anders Carlssonffbdefc2009-09-24 05:21:31 +000013
14struct D { };
15struct E : D { };
16struct F : E { };
17
18struct G : E, F { };
19SA(3, sizeof(G) == 2);
Anders Carlsson60265042009-09-25 00:02:51 +000020
Anders Carlssonfbbce492009-09-25 01:23:32 +000021struct Empty { Empty(); };
Anders Carlsson60265042009-09-25 00:02:51 +000022
Anders Carlssonfbbce492009-09-25 01:23:32 +000023struct I : Empty {
24 Empty e;
Anders Carlsson60265042009-09-25 00:02:51 +000025};
26SA(4, sizeof(I) == 2);
Anders Carlssonfbbce492009-09-25 01:23:32 +000027
28struct J : Empty {
29 Empty e[2];
30};
Anders Carlssona4c60812009-09-25 01:54:38 +000031SA(5, sizeof(J) == 3);
32
33template<int N> struct Derived : Empty, Derived<N - 1> {
34};
35template<> struct Derived<0> : Empty { };
36
37struct S1 : virtual Derived<10> {
38 Empty e;
39};
40SA(6, sizeof(S1) == 24);
41
42struct S2 : virtual Derived<10> {
43 Empty e[2];
44};
45SA(7, sizeof(S2) == 24);