1 // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \ 2 // RUN: | FileCheck %s 3 // RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts -fsyntax-only %s 2>/dev/null \ 4 // RUN: | FileCheck %s 5 6 struct EmptyIntMemb { 7 int FlexArrayMemb[0]; 8 }; 9 // CHECK: *** Dumping AST Record Layout 10 // CHECK-NEXT: 0 | struct EmptyIntMemb 11 // CHECK-NEXT: 0 | int [0] FlexArrayMemb 12 // CHECK-NEXT: | [sizeof=4, align=4 13 14 struct EmptyLongLongMemb { 15 long long FlexArrayMemb[0]; 16 }; 17 // CHECK: *** Dumping AST Record Layout 18 // CHECK-NEXT: 0 | struct EmptyLongLongMemb 19 // CHECK-NEXT: 0 | long long [0] FlexArrayMemb 20 // CHECK-NEXT: | [sizeof=4, align=8 21 22 struct EmptyAligned2LongLongMemb { 23 long long __declspec(align(2)) FlexArrayMemb[0]; 24 }; 25 26 // CHECK: *** Dumping AST Record Layout 27 // CHECK-NEXT: 0 | struct EmptyAligned2LongLongMemb 28 // CHECK-NEXT: 0 | long long [0] FlexArrayMemb 29 // CHECK-NEXT: | [sizeof=4, align=8 30 31 struct EmptyAligned8LongLongMemb { 32 long long __declspec(align(8)) FlexArrayMemb[0]; 33 }; 34 35 // CHECK: *** Dumping AST Record Layout 36 // CHECK-NEXT: 0 | struct EmptyAligned8LongLongMemb 37 // CHECK-NEXT: 0 | long long [0] FlexArrayMemb 38 // CHECK-NEXT: | [sizeof=8, align=8 39 40 #pragma pack(1) 41 struct __declspec(align(4)) EmptyPackedAligned4LongLongMemb { 42 long long FlexArrayMemb[0]; 43 }; 44 #pragma pack() 45 46 // CHECK: *** Dumping AST Record Layout 47 // CHECK-NEXT: 0 | struct EmptyPackedAligned4LongLongMemb 48 // CHECK-NEXT: 0 | long long [0] FlexArrayMemb 49 // CHECK-NEXT: | [sizeof=4, align=4 50 51 #pragma pack(1) 52 struct EmptyPackedAligned8LongLongMemb { 53 long long __declspec(align(8)) FlexArrayMemb[0]; 54 }; 55 #pragma pack() 56 57 // CHECK: *** Dumping AST Record Layout 58 // CHECK-NEXT: 0 | struct EmptyPackedAligned8LongLongMemb 59 // CHECK-NEXT: 0 | long long [0] FlexArrayMemb 60 // CHECK-NEXT: | [sizeof=8, align=8 61 62 63 int a[ 64 sizeof(struct EmptyIntMemb)+ 65 sizeof(struct EmptyLongLongMemb)+ 66 sizeof(struct EmptyAligned2LongLongMemb)+ 67 sizeof(struct EmptyAligned8LongLongMemb)+ 68 sizeof(struct EmptyPackedAligned4LongLongMemb)+ 69 sizeof(struct EmptyPackedAligned8LongLongMemb)+ 70 0]; 71