llvm-project/clang/test/Sema/mms-bitfields.c
Alex Lorenz de07acb9a5 [PR32482] Fix bitfield layout for -mms-bitfield and pragma pack
The patch ensures that a new storage unit is created when the new bitfield's
size is wider than the available bits.

rdar://36343145

Differential Revision: https://reviews.llvm.org/D42660

llvm-svn: 323921
2018-01-31 21:59:02 +00:00

29 lines
591 B
C

// RUN: %clang_cc1 -mms-bitfields -fsyntax-only -verify -triple x86_64-apple-darwin9 %s
// expected-no-diagnostics
// The -mms-bitfields commandline parameter should behave the same
// as the ms_struct attribute.
struct
{
int a : 1;
short b : 1;
} t;
// MS pads out bitfields between different types.
static int arr[(sizeof(t) == 8) ? 1 : -1];
#pragma pack (push,1)
typedef unsigned int UINT32;
struct Inner {
UINT32 A : 1;
UINT32 B : 1;
UINT32 C : 1;
UINT32 D : 30;
} Inner;
#pragma pack (pop)
static int arr2[(sizeof(Inner) == 8) ? 1 : -1];