// RUN: %clang_cc1 %s -fsyntax-only -verify
// RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-windows-coff -verify
// RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-scei-ps4 -verify
// RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-sie-ps5 -verify
// Packed structs.
;
extern int a1;
extern int a2;
;
extern int b1;
extern int b2;
;
extern int c1;
extern int c2;
;
extern int d1;
extern int d2;
;
extern int d1_2;
extern int d2_2;
// Alignment
;
extern int e1;
extern int e2;
;
extern int e1_2;
extern int e2_2;
extern int e1_2;
extern int e2_2;
;
extern int f1;
extern int f2;
;
extern int g1;
extern int g2;
// rdar://5921025
;
// Packed union
;
extern int h1;
extern int h2;
// Aligned union
;
extern int h1;
extern int h2;
// Alignment+packed
;
extern int i1;
extern int i2;
;
extern int k1;
extern int k2;
// Check postfix attributes
;
extern int l1;
extern int l2;
;
extern int m1;
extern int m2;
// Attribute aligned can round down typedefs. PR9253
typedef long long nt;
;
// Alignment doesn't affect packing in MS mode.
extern int n1;
extern int n2;
extern int n1;
extern int n2;
// Packed attribute shouldn't be ignored for bit-field of char types.
// Note from GCC reference manual: The 4.1, 4.2 and 4.3 series of GCC ignore
// the packed attribute on bit-fields of type char. This has been fixed in
// GCC 4.4 but the change can lead to differences in the structure layout.
// See the documentation of -Wpacked-bitfield-compat for more information.
;
// On Windows clang uses MSVC compatible layout in this case.
//
// Additionally, test for pre-r254596 clang behavior on the PS4/PS5 targets.
// They must maintain ABI backwards compatibility.
extern int o1;
extern int o2;
// On AIX, char bitfields have the same alignment as unsigned int.
extern int o1;
extern int o2;
extern int o1;
extern int o2;