diff options
author | John McCall <rjmccall@apple.com> | 2015-08-19 22:42:36 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2015-08-19 22:42:36 +0000 |
commit | 0d461693b6c7944119d6384d3a38d6c675815317 (patch) | |
tree | 98fada608f180b92a79fa33a13e13d0038007d95 /clang/test/Layout/ms-x86-empty-layout.c | |
parent | 10ac1f98faab6029201867e8c409de2f0200283c (diff) | |
download | bcm5719-llvm-0d461693b6c7944119d6384d3a38d6c675815317.tar.gz bcm5719-llvm-0d461693b6c7944119d6384d3a38d6c675815317.zip |
Fix the layout of bitfields in ms_struct unions: their
alignment is ignored, and they always allocate a complete
storage unit.
Also, change the dumping of AST record layouts: use the more
readable C++-style dumping even in C, include bitfield offset
information in the dump, and don't print sizeof/alignof
information for fields of record type, since we don't do so
for bases or other kinds of field.
rdar://22275433
llvm-svn: 245514
Diffstat (limited to 'clang/test/Layout/ms-x86-empty-layout.c')
-rw-r--r-- | clang/test/Layout/ms-x86-empty-layout.c | 56 |
1 files changed, 19 insertions, 37 deletions
diff --git a/clang/test/Layout/ms-x86-empty-layout.c b/clang/test/Layout/ms-x86-empty-layout.c index 3554baf3a8b..5dbd8446597 100644 --- a/clang/test/Layout/ms-x86-empty-layout.c +++ b/clang/test/Layout/ms-x86-empty-layout.c @@ -6,48 +6,36 @@ struct EmptyIntMemb { int FlexArrayMemb[0]; }; -// CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyIntMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:32 -// CHECK: Alignment:32 -// CHECK: FieldOffsets: [0]> +// CHECK: *** Dumping AST Record Layout +// CHECK-NEXT: 0 | struct EmptyIntMemb +// CHECK-NEXT: 0 | int [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=4, align=4 struct EmptyLongLongMemb { long long FlexArrayMemb[0]; }; // CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyLongLongMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:32 -// CHECK: Alignment:64 -// CHECK: FieldOffsets: [0]> +// CHECK-NEXT: 0 | struct EmptyLongLongMemb +// CHECK-NEXT: 0 | long long [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=4, align=8 struct EmptyAligned2LongLongMemb { long long __declspec(align(2)) FlexArrayMemb[0]; }; // CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyAligned2LongLongMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:32 -// CHECK: Alignment:64 -// CHECK: FieldOffsets: [0]> +// CHECK-NEXT: 0 | struct EmptyAligned2LongLongMemb +// CHECK-NEXT: 0 | long long [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=4, align=8 struct EmptyAligned8LongLongMemb { long long __declspec(align(8)) FlexArrayMemb[0]; }; // CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyAligned8LongLongMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:64 -// CHECK: Alignment:64 -// CHECK: FieldOffsets: [0]> +// CHECK-NEXT: 0 | struct EmptyAligned8LongLongMemb +// CHECK-NEXT: 0 | long long [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=8, align=8 #pragma pack(1) struct __declspec(align(4)) EmptyPackedAligned4LongLongMemb { @@ -56,12 +44,9 @@ struct __declspec(align(4)) EmptyPackedAligned4LongLongMemb { #pragma pack() // CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyPackedAligned4LongLongMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:32 -// CHECK: Alignment:32 -// CHECK: FieldOffsets: [0]> +// CHECK-NEXT: 0 | struct EmptyPackedAligned4LongLongMemb +// CHECK-NEXT: 0 | long long [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=4, align=4 #pragma pack(1) struct EmptyPackedAligned8LongLongMemb { @@ -70,12 +55,9 @@ struct EmptyPackedAligned8LongLongMemb { #pragma pack() // CHECK: *** Dumping AST Record Layout -// CHECK: Type: struct EmptyPackedAligned8LongLongMemb -// CHECK: Record: -// CHECK: Layout: <ASTRecordLayout -// CHECK: Size:64 -// CHECK: Alignment:64 -// CHECK: FieldOffsets: [0]> +// CHECK-NEXT: 0 | struct EmptyPackedAligned8LongLongMemb +// CHECK-NEXT: 0 | long long [0] FlexArrayMemb +// CHECK-NEXT: | [sizeof=8, align=8 int a[ |