187aa9c9eSJonas Devlieghere // clang-format off 2eb50b643SPavel Labath // REQUIRES: lld, x86 387aa9c9eSJonas Devlieghere 487aa9c9eSJonas Devlieghere // Test various interesting cases for AST reconstruction. 5eb50b643SPavel Labath // RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -c /Fo%t.obj -- %s 6eb50b643SPavel Labath // RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb 7*cf3464bbSJonas Devlieghere // RUN: %lldb -f %t.exe -s \ 887aa9c9eSJonas Devlieghere // RUN: %p/Inputs/bitfields.lldbinit 2>&1 | FileCheck %s 987aa9c9eSJonas Devlieghere 1087aa9c9eSJonas Devlieghere // Test trivial versions of each tag type. 1187aa9c9eSJonas Devlieghere struct Struct { 1287aa9c9eSJonas Devlieghere int A : 5 = 6; 1387aa9c9eSJonas Devlieghere int B : 7 = 8; 1487aa9c9eSJonas Devlieghere unsigned C : 3 = 2; 1587aa9c9eSJonas Devlieghere unsigned D : 15 = 12345; 1687aa9c9eSJonas Devlieghere char E : 1 = 0; 1787aa9c9eSJonas Devlieghere char F : 2 = 1; 1887aa9c9eSJonas Devlieghere char G : 3 = 2; 1987aa9c9eSJonas Devlieghere // H should be at offset 0 of a new byte. 2087aa9c9eSJonas Devlieghere char H : 3 = 3; 2187aa9c9eSJonas Devlieghere }; 2287aa9c9eSJonas Devlieghere 2387aa9c9eSJonas Devlieghere constexpr Struct TheStruct; 2487aa9c9eSJonas Devlieghere 2587aa9c9eSJonas Devlieghere 2687aa9c9eSJonas Devlieghere int main(int argc, char **argv) { 2787aa9c9eSJonas Devlieghere return TheStruct.A; 2887aa9c9eSJonas Devlieghere } 2987aa9c9eSJonas Devlieghere 3087aa9c9eSJonas Devlieghere // CHECK: (lldb) target variable -T TheStruct 3187aa9c9eSJonas Devlieghere // CHECK: (const Struct) TheStruct = { 3287aa9c9eSJonas Devlieghere // CHECK: (int:5) A = 6 3387aa9c9eSJonas Devlieghere // CHECK: (int:7) B = 8 3487aa9c9eSJonas Devlieghere // CHECK: (unsigned int:3) C = 2 3587aa9c9eSJonas Devlieghere // CHECK: (unsigned int:15) D = 12345 3687aa9c9eSJonas Devlieghere // CHECK: (char:1) E = '\0' 3787aa9c9eSJonas Devlieghere // CHECK: (char:2) F = '\x01' 3887aa9c9eSJonas Devlieghere // CHECK: (char:3) G = '\x02' 3987aa9c9eSJonas Devlieghere // CHECK: (char:3) H = '\x03' 4087aa9c9eSJonas Devlieghere // CHECK: } 4187aa9c9eSJonas Devlieghere // 4287aa9c9eSJonas Devlieghere // CHECK: target modules dump ast 4387aa9c9eSJonas Devlieghere // CHECK: Dumping clang ast for 1 modules. 4487aa9c9eSJonas Devlieghere // CHECK: TranslationUnitDecl {{.*}} 4587aa9c9eSJonas Devlieghere // CHECK: |-CXXRecordDecl {{.*}} struct Struct definition 4687aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} A 'int' 4787aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 5 4887aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} B 'int' 4987aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 7 5087aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} C 'unsigned int' 5187aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 3 5287aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} D 'unsigned int' 5387aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 15 5487aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} E 'char' 5587aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 1 5687aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} F 'char' 5787aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 2 5887aa9c9eSJonas Devlieghere // CHECK: | |-FieldDecl {{.*}} G 'char' 5987aa9c9eSJonas Devlieghere // CHECK: | | `-IntegerLiteral {{.*}} 'int' 3 6087aa9c9eSJonas Devlieghere // CHECK: | `-FieldDecl {{.*}} H 'char' 6187aa9c9eSJonas Devlieghere // CHECK: | `-IntegerLiteral {{.*}} 'int' 3 62