| // 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)]; | 
 | } |