// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \
// RUN:            | FileCheck %s -check-prefix CHECK

// Before PR45420, we would only find the alignment on this record. Afterwards,
// we can see the alignment on the typedef through the array type.
// FIXME: What about other type sugar, like _Atomic? This would only matter in a
// packed struct context.
struct __declspec(align(16)) AlignedStruct { int x; };
typedef int  __declspec(align(16)) AlignedInt;

#define CHECK_SIZE(X, Align) \
  _Static_assert(__alignof(struct X) == Align, "should be aligned");

#pragma pack(push, 2)

struct A {
  struct AlignedStruct a[1];
};
CHECK_SIZE(A, 16);

struct B {
  char b;
  AlignedInt a[1];
};
CHECK_SIZE(B, 16);

struct C {
  char b;
  AlignedInt a[];
};
CHECK_SIZE(C, 16);

// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:          0 | struct AlignedStruct
// CHECK-NEXT:          0 |   int x
// CHECK-NEXT:            | [sizeof=16, align=16]
// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:          0 | struct A
// CHECK-NEXT:          0 |   struct AlignedStruct[1] a
// CHECK-NEXT:            | [sizeof=16, align=16]
// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:          0 | struct B
// CHECK-NEXT:          0 |   char b
// CHECK-NEXT:         16 |   AlignedInt[1] a
// CHECK-NEXT:            | [sizeof=32, align=16]
// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:          0 | struct C
// CHECK-NEXT:          0 |   char b
// CHECK-NEXT:         16 |   AlignedInt[] a
// CHECK-NEXT:            | [sizeof=16, align=16]

#pragma pack(pop)

