// RUN: %clang_cc1 -fno-rtti -triple i686-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \
// RUN:            | FileCheck %s --strict-whitespace
// RUN: %clang_cc1 -fno-rtti -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \
// RUN:            | FileCheck %s --strict-whitespace

extern "C" int printf(const char *fmt, ...);

struct __declspec(align(8)) B0 { B0() {printf("B0 : %p\n", this);} };
struct __declspec(align(8)) B1 { B1() {printf("B1 : %p\n", this);} };
struct __declspec(align(8)) B2 { B2() {printf("B2 : %p\n", this);} };
struct __declspec(align(8)) B3 { B3() {printf("B3 : %p\n", this);} };
struct __declspec(align(8)) B4 { B4() {printf("B4 : %p\n", this);} };

struct C0 { int a; C0() : a(0xf00000C0) {printf("C0 : %p\n", this);} };
struct C1 { int a; C1() : a(0xf00000C1) {printf("C1 : %p\n", this);} };
struct C2 { int a; C2() : a(0xf00000C2) {printf("C2 : %p\n", this);} };
struct C3 { int a; C3() : a(0xf00000C3) {printf("C3 : %p\n", this);} };
struct C4 { int a; C4() : a(0xf00000C4) {printf("C4 : %p\n", this);} };

struct A : B0 {
	int a;
	A() : a(0xf000000A) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct A{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    0 |   int a
// CHECK-NEXT:      | [sizeof=8, align=8
// CHECK-NEXT:      |  nvsize=8, nvalign=8]

struct B : B0 {
	B0 b0;
	int a;
	B() : a(0xf000000B) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct B{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    0 |   struct B0 b0 (empty)
// CHECK:         8 |   int a
// CHECK-NEXT:      | [sizeof=16, align=8
// CHECK-NEXT:      |  nvsize=16, nvalign=8]

struct C : B0, B1, B2, B3, B4 {
	int a;
	C() : a(0xf000000C) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct C{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    8 |   struct B1 (base) (empty)
// CHECK-NEXT:   16 |   struct B2 (base) (empty)
// CHECK-NEXT:   24 |   struct B3 (base) (empty)
// CHECK-NEXT:   32 |   struct B4 (base) (empty)
// CHECK-NEXT:   32 |   int a
// CHECK-NEXT:      | [sizeof=40, align=8
// CHECK-NEXT:      |  nvsize=40, nvalign=8]

struct D {
	B0 b0;
	C0 c0;
	C1 c1;
	C2 c2;
	B1 b1;
	int a;
	D() : a(0xf000000D) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct D{{$}}
// CHECK-NEXT:    0 |   struct B0 b0 (empty)
// CHECK:         8 |   struct C0 c0
// CHECK-NEXT:    8 |     int a
// CHECK:        12 |   struct C1 c1
// CHECK-NEXT:   12 |     int a
// CHECK:        16 |   struct C2 c2
// CHECK-NEXT:   16 |     int a
// CHECK:        24 |   struct B1 b1 (empty)
// CHECK:        32 |   int a
// CHECK-NEXT:      | [sizeof=40, align=8
// CHECK-NEXT:      |  nvsize=40, nvalign=8]

struct E : B0, C0, C1, C2, B1 {
	int a;
	E() : a(0xf000000E) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct E{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    0 |   struct C0 (base)
// CHECK-NEXT:    0 |     int a
// CHECK-NEXT:    4 |   struct C1 (base)
// CHECK-NEXT:    4 |     int a
// CHECK-NEXT:    8 |   struct C2 (base)
// CHECK-NEXT:    8 |     int a
// CHECK-NEXT:   16 |   struct B1 (base) (empty)
// CHECK-NEXT:   16 |   int a
// CHECK-NEXT:      | [sizeof=24, align=8
// CHECK-NEXT:      |  nvsize=24, nvalign=8]

struct F : C0, B0, B1, C1 {
	int a;
	F() : a(0xf000000F) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct F{{$}}
// CHECK-NEXT:    0 |   struct C0 (base)
// CHECK-NEXT:    0 |     int a
// CHECK-NEXT:    8 |   struct B0 (base) (empty)
// CHECK-NEXT:   16 |   struct B1 (base) (empty)
// CHECK-NEXT:   16 |   struct C1 (base)
// CHECK-NEXT:   16 |     int a
// CHECK-NEXT:   20 |   int a
// CHECK-NEXT:      | [sizeof=24, align=8
// CHECK-NEXT:      |  nvsize=24, nvalign=8]

struct G : B0, B1, B2, B3, B4 {
	__declspec(align(32)) int a;
	G() : a(0xf0000011) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct G{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    8 |   struct B1 (base) (empty)
// CHECK-NEXT:   16 |   struct B2 (base) (empty)
// CHECK-NEXT:   24 |   struct B3 (base) (empty)
// CHECK-NEXT:   32 |   struct B4 (base) (empty)
// CHECK-NEXT:   32 |   int a
// CHECK-NEXT:      | [sizeof=64, align=32
// CHECK-NEXT:      |  nvsize=64, nvalign=32]

struct __declspec(align(32)) H : B0, B1, B2, B3, B4 {
	int a;
	H() : a(0xf0000011) {printf("X : %p\n", this);}
};

// CHECK-LABEL:   0 | struct H{{$}}
// CHECK-NEXT:    0 |   struct B0 (base) (empty)
// CHECK-NEXT:    8 |   struct B1 (base) (empty)
// CHECK-NEXT:   16 |   struct B2 (base) (empty)
// CHECK-NEXT:   24 |   struct B3 (base) (empty)
// CHECK-NEXT:   32 |   struct B4 (base) (empty)
// CHECK-NEXT:   32 |   int a
// CHECK-NEXT:      | [sizeof=64, align=32
// CHECK-NEXT:      |  nvsize=40, nvalign=32]

struct I {
  int i0[0];
};

// CHECK-LABEL:   0 | struct I{{$}}
// CHECK-NEXT:    0 |   int[0] i0
// CHECK-NEXT:      | [sizeof={{1|4}}, align=4,
// CHECK-NEXT:      |  nvsize=0, nvalign=4]

struct J : I {
  int j;
};

// CHECK-LABEL:  0 | struct J{{$}}
// CHECK-NEXT:   0 |   struct I (base)
// CHECK-NEXT:   0 |     int[0] i0
// CHECK-NEXT:   0 |   int j
// CHECK-NEXT:     | [sizeof=4, align=4,
// CHECK-NEXT:     |  nvsize=4, nvalign=4]

int a[
sizeof(A)+
sizeof(B)+
sizeof(C)+
sizeof(D)+
sizeof(E)+
sizeof(F)+
sizeof(G)+
sizeof(H)+
sizeof(I)+
sizeof(J)];
