diff options
Diffstat (limited to 'test/Layout/ms_struct-bitfields.c')
-rw-r--r-- | test/Layout/ms_struct-bitfields.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/Layout/ms_struct-bitfields.c b/test/Layout/ms_struct-bitfields.c new file mode 100644 index 0000000..9cb455b --- /dev/null +++ b/test/Layout/ms_struct-bitfields.c @@ -0,0 +1,48 @@ +// RUN: %clang_cc1 -emit-llvm-only -triple armv7-apple-darwin -fdump-record-layouts %s 2>/dev/null \ +// RUN: | FileCheck %s + +// rdar://22275433 + +#pragma ms_struct on + +union A { + unsigned long long x : 32; + unsigned long long y : 32; +} a; +// CHECK:*** Dumping AST Record Layout +// CHECK-NEXT: 0 | union A +// CHECK-NEXT: 0:0-31 | unsigned long long x +// CHECK-NEXT: 0:0-31 | unsigned long long y +// CHECK-NEXT: | [sizeof=8, align=1] + +union B { + __attribute__((aligned(4))) + unsigned long long x : 32; + unsigned long long y : 32; +} b; +// CHECK:*** Dumping AST Record Layout +// CHECK-NEXT: 0 | union B +// CHECK-NEXT: 0:0-31 | unsigned long long x +// CHECK-NEXT: 0:0-31 | unsigned long long y +// CHECK-NEXT: | [sizeof=8, align=1] + +union C { + unsigned long long : 0; + unsigned short y : 8; +} c; +// CHECK:*** Dumping AST Record Layout +// CHECK-NEXT: 0 | union C +// CHECK-NEXT: 0:- | unsigned long long +// CHECK-NEXT: 0:0-7 | unsigned short y +// CHECK-NEXT: | [sizeof=2, align=1] + +union D { + unsigned long long : 0; + unsigned short : 0; +} d; +// CHECK:*** Dumping AST Record Layout +// CHECK-NEXT: 0 | union D +// CHECK-NEXT: 0:- | unsigned long long +// CHECK-NEXT: 0:- | unsigned short +// CHECK-NEXT: | [sizeof=1, align=1] + |