1*20c4e95bSVladislav DzhidzhoevREQUIRES: target-windows, msvc 287aa9c9eSJonas DevlieghereRUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp 387aa9c9eSJonas DevlieghereRUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj 487aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s 587aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s 687aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s 787aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s 887aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s 987aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s 1087aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s 1187aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s 1287aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s 1387aa9c9eSJonas DevlieghereRUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s 1487aa9c9eSJonas Devlieghere 1587aa9c9eSJonas DevlieghereCHECK: Module [[MOD:.*]] 1687aa9c9eSJonas DevlieghereCHECK: SymbolFile pdb ([[MOD]]) 1787aa9c9eSJonas DevlieghereCHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp' 1887aa9c9eSJonas Devlieghere 1987aa9c9eSJonas DevlieghereENUM: name = "Enum", size = 4, decl = ClassLayoutTest.cpp:5 2087aa9c9eSJonas DevlieghereENUM-SAME: enum Enum { 2187aa9c9eSJonas DevlieghereENUM: RED, 2287aa9c9eSJonas DevlieghereENUM: GREEN, 2387aa9c9eSJonas DevlieghereENUM: BLUE 2487aa9c9eSJonas DevlieghereENUM:} 2587aa9c9eSJonas Devlieghere 2687aa9c9eSJonas DevlieghereUNION: name = "Union", size = 4, decl = ClassLayoutTest.cpp:9 2787aa9c9eSJonas DevlieghereUNION-SAME: union Union { 2887aa9c9eSJonas DevlieghereUNION: short Row; 2987aa9c9eSJonas DevlieghereUNION: unsigned short Col; 3087aa9c9eSJonas DevlieghereUNION: int Line : 16; 3187aa9c9eSJonas DevlieghereUNION: long Table; 3287aa9c9eSJonas DevlieghereUNION:} 3387aa9c9eSJonas Devlieghere 3487aa9c9eSJonas DevlieghereSTRUCT: name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22 3587aa9c9eSJonas DevlieghereSTRUCT-SAME: struct Struct { 3687aa9c9eSJonas DevlieghereSTRUCT: bool A; 3787aa9c9eSJonas DevlieghereSTRUCT: unsigned char UCharVar; 3887aa9c9eSJonas DevlieghereSTRUCT: unsigned int UIntVar; 3987aa9c9eSJonas DevlieghereSTRUCT: long long LongLongVar; 4087aa9c9eSJonas DevlieghereSTRUCT: Enum EnumVar; 4187aa9c9eSJonas DevlieghereSTRUCT: int array[10]; 4287aa9c9eSJonas DevlieghereSTRUCT:} 4387aa9c9eSJonas Devlieghere 4487aa9c9eSJonas DevlieghereCOMPLEX: name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33 4587aa9c9eSJonas DevlieghereCOMPLEX-SAME: struct Complex { 4687aa9c9eSJonas DevlieghereCOMPLEX: _List *array[90]; 4787aa9c9eSJonas DevlieghereCOMPLEX: int x; 4887aa9c9eSJonas DevlieghereCOMPLEX: int a; 4987aa9c9eSJonas DevlieghereCOMPLEX: float b; 5087aa9c9eSJonas DevlieghereCOMPLEX:} 5187aa9c9eSJonas Devlieghere 5287aa9c9eSJonas DevlieghereLIST: name = "_List", size = 12, decl = ClassLayoutTest.cpp:45 5387aa9c9eSJonas DevlieghereLIST-SAME: struct _List { 5487aa9c9eSJonas DevlieghereLIST: _List *current; 5587aa9c9eSJonas DevlieghereLIST: _List *previous; 5687aa9c9eSJonas DevlieghereLIST: _List *next; 5787aa9c9eSJonas DevlieghereLIST:} 5887aa9c9eSJonas Devlieghere 5987aa9c9eSJonas DevlieghereUNNAMED-STRUCT: name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52 6087aa9c9eSJonas DevlieghereUNNAMED-STRUCT-SAME: struct UnnamedStruct { 6187aa9c9eSJonas DevlieghereUNNAMED-STRUCT: int a; 6287aa9c9eSJonas DevlieghereUNNAMED-STRUCT:} 6387aa9c9eSJonas Devlieghere 6487aa9c9eSJonas DevlieghereBASE: name = "Base", size = 4, decl = ClassLayoutTest.cpp:59 6587aa9c9eSJonas DevlieghereBASE-SAME: class Base { 6687aa9c9eSJonas DevlieghereBASE: int a; 6787aa9c9eSJonas DevlieghereBASE: Base(); 6887aa9c9eSJonas DevlieghereBASE: ~Base(); 6987aa9c9eSJonas DevlieghereBASE: int Get(); 7087aa9c9eSJonas DevlieghereBASE:} 7187aa9c9eSJonas Devlieghere 7287aa9c9eSJonas DevlieghereFRIEND: name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70 7387aa9c9eSJonas DevlieghereFRIEND-SAME: class Friend { 7487aa9c9eSJonas DevlieghereFRIEND: int f(); 7587aa9c9eSJonas DevlieghereFRIEND: } 7687aa9c9eSJonas Devlieghere 7787aa9c9eSJonas DevlieghereCLASS: name = "Class", size = 88, decl = ClassLayoutTest.cpp:74 7887aa9c9eSJonas DevlieghereCLASS-SAME: class Class : public MemberTest::Base { 7987aa9c9eSJonas DevlieghereCLASS: static int m_static; 8087aa9c9eSJonas DevlieghereCLASS: int m_public; 8187aa9c9eSJonas DevlieghereCLASS: Struct m_struct; 8287aa9c9eSJonas DevlieghereCLASS: Union m_union; 8387aa9c9eSJonas DevlieghereCLASS: int m_private; 8487aa9c9eSJonas DevlieghereCLASS: int m_protected; 8587aa9c9eSJonas DevlieghereCLASS: Class(); 8687aa9c9eSJonas DevlieghereCLASS: Class(int); 8787aa9c9eSJonas DevlieghereCLASS: ~Class(); 88f4abf28cSStella StamenovaCLASS: {{(static )?}}int {{.*}}StaticMemberFunc(int, ...); 8987aa9c9eSJonas DevlieghereCLASS: int Get(); 9087aa9c9eSJonas DevlieghereCLASS: int f(MemberTest::Friend); 9187aa9c9eSJonas DevlieghereCLASS: bool operator==(const MemberTest::Class &) 9287aa9c9eSJonas DevlieghereCLASS:} 93