diff options
Diffstat (limited to 'clang/test/Layout/ms_struct-bitfields.c')
-rw-r--r-- | clang/test/Layout/ms_struct-bitfields.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/clang/test/Layout/ms_struct-bitfields.c b/clang/test/Layout/ms_struct-bitfields.c new file mode 100644 index 00000000000..9cb455b5cc4 --- /dev/null +++ b/clang/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] + |