1REQUIRES: target-windows, msvc 2RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp 3RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj 4RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s 5RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s 6RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s 7RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s 8RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s 9RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s 10RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s 11RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s 12RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s 13RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s 14 15CHECK: Module [[MOD:.*]] 16CHECK: SymbolFile pdb ([[MOD]]) 17CHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp' 18 19ENUM: name = "Enum", size = 4, decl = ClassLayoutTest.cpp:5 20ENUM-SAME: enum Enum { 21ENUM: RED, 22ENUM: GREEN, 23ENUM: BLUE 24ENUM:} 25 26UNION: name = "Union", size = 4, decl = ClassLayoutTest.cpp:9 27UNION-SAME: union Union { 28UNION: short Row; 29UNION: unsigned short Col; 30UNION: int Line : 16; 31UNION: long Table; 32UNION:} 33 34STRUCT: name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22 35STRUCT-SAME: struct Struct { 36STRUCT: bool A; 37STRUCT: unsigned char UCharVar; 38STRUCT: unsigned int UIntVar; 39STRUCT: long long LongLongVar; 40STRUCT: Enum EnumVar; 41STRUCT: int array[10]; 42STRUCT:} 43 44COMPLEX: name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33 45COMPLEX-SAME: struct Complex { 46COMPLEX: _List *array[90]; 47COMPLEX: int x; 48COMPLEX: int a; 49COMPLEX: float b; 50COMPLEX:} 51 52LIST: name = "_List", size = 12, decl = ClassLayoutTest.cpp:45 53LIST-SAME: struct _List { 54LIST: _List *current; 55LIST: _List *previous; 56LIST: _List *next; 57LIST:} 58 59UNNAMED-STRUCT: name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52 60UNNAMED-STRUCT-SAME: struct UnnamedStruct { 61UNNAMED-STRUCT: int a; 62UNNAMED-STRUCT:} 63 64BASE: name = "Base", size = 4, decl = ClassLayoutTest.cpp:59 65BASE-SAME: class Base { 66BASE: int a; 67BASE: Base(); 68BASE: ~Base(); 69BASE: int Get(); 70BASE:} 71 72FRIEND: name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70 73FRIEND-SAME: class Friend { 74FRIEND: int f(); 75FRIEND: } 76 77CLASS: name = "Class", size = 88, decl = ClassLayoutTest.cpp:74 78CLASS-SAME: class Class : public MemberTest::Base { 79CLASS: static int m_static; 80CLASS: int m_public; 81CLASS: Struct m_struct; 82CLASS: Union m_union; 83CLASS: int m_private; 84CLASS: int m_protected; 85CLASS: Class(); 86CLASS: Class(int); 87CLASS: ~Class(); 88CLASS: {{(static )?}}int {{.*}}StaticMemberFunc(int, ...); 89CLASS: int Get(); 90CLASS: int f(MemberTest::Friend); 91CLASS: bool operator==(const MemberTest::Class &) 92CLASS:} 93