| // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \ |
| // RUN: | FileCheck %s |
| // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \ |
| // RUN: | FileCheck %s |
| |
| struct EmptyIntMemb { |
| int FlexArrayMemb[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-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-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-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 { |
| long long FlexArrayMemb[0]; |
| }; |
| #pragma pack() |
| |
| // CHECK: *** Dumping AST Record Layout |
| // CHECK-NEXT: 0 | struct EmptyPackedAligned4LongLongMemb |
| // CHECK-NEXT: 0 | long long [0] FlexArrayMemb |
| // CHECK-NEXT: | [sizeof=4, align=4 |
| |
| #pragma pack(1) |
| struct EmptyPackedAligned8LongLongMemb { |
| long long __declspec(align(8)) FlexArrayMemb[0]; |
| }; |
| #pragma pack() |
| |
| // CHECK: *** Dumping AST Record Layout |
| // CHECK-NEXT: 0 | struct EmptyPackedAligned8LongLongMemb |
| // CHECK-NEXT: 0 | long long [0] FlexArrayMemb |
| // CHECK-NEXT: | [sizeof=8, align=8 |
| |
| |
| int a[ |
| sizeof(struct EmptyIntMemb)+ |
| sizeof(struct EmptyLongLongMemb)+ |
| sizeof(struct EmptyAligned2LongLongMemb)+ |
| sizeof(struct EmptyAligned8LongLongMemb)+ |
| sizeof(struct EmptyPackedAligned4LongLongMemb)+ |
| sizeof(struct EmptyPackedAligned8LongLongMemb)+ |
| 0]; |