// RUN: %clang_cc1 %std_cxx98-14 -w -triple=x86_64-pc-win32 -fms-compatibility -fdump-record-layouts-simple -foverride-record-layout=%S/Inputs/override-bit-field-layout.layout %s | FileCheck %s --check-prefixes=CHECK,PRE17 // RUN: %clang_cc1 -std=c++17 -w -triple=x86_64-pc-win32 -fms-compatibility -fdump-record-layouts-simple -foverride-record-layout=%S/Inputs/override-bit-field-layout.layout %s | FileCheck %s --check-prefixes=CHECK,CXX17 // RUN: %clang_cc1 %std_cxx20- -w -triple=x86_64-pc-win32 -fms-compatibility -fdump-record-layouts-simple -foverride-record-layout=%S/Inputs/override-bit-field-layout.layout %s | FileCheck %s --check-prefixes=CHECK,CXX20 // PRE17: Type: struct S1 // PRE17: FieldOffsets: [0, 11] struct S1 { short a : 3; short b : 5; }; // CHECK: Type: struct S2 // CHECK: FieldOffsets: [64] struct S2 { virtual ~S2() = default; short a : 3; }; // CXX17: Type: struct S1 // CXX17: FieldOffsets: [0, 11] // CXX20: Type: struct S1 // CXX20: FieldOffsets: [0, 3] // CHECK: Type: struct S3 // CHECK: Size:32 // CHECK: FieldOffsets: [0, 1] struct S3 { int a : 1; int b : 2; }; // CHECK: Type: struct S4 // CHECK: FieldOffsets: [32] struct S4 : S3 { char c; }; void use_structs() { S1 s1s[sizeof(S1)]; S2 s2s[sizeof(S2)]; S3 s3s[sizeof(S3)]; S4 s4s[sizeof(S4)]; }