reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
REQUIRES: system-windows, msvc
RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp
RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s
RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s

CHECK: Module [[MOD:.*]]
CHECK: SymbolFile pdb ([[MOD]])
CHECK: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp'

ENUM:  name = "Enum", size = 4,  decl = ClassLayoutTest.cpp:5
ENUM-SAME: enum Enum {
ENUM:    RED,
ENUM:    GREEN,
ENUM:    BLUE
ENUM:}

UNION:  name = "Union", size = 4, decl = ClassLayoutTest.cpp:9
UNION-SAME: union Union {
UNION:    short Row;
UNION:    unsigned short Col;
UNION:    int Line : 16;
UNION:    long Table;
UNION:}

STRUCT:  name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22
STRUCT-SAME: struct Struct {
STRUCT:    bool A;
STRUCT:    unsigned char UCharVar;
STRUCT:    unsigned int UIntVar;
STRUCT:    long long LongLongVar;
STRUCT:    Enum EnumVar;
STRUCT:    int array[10];
STRUCT:}

COMPLEX:  name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33
COMPLEX-SAME: struct Complex {
COMPLEX:    _List *array[90];
COMPLEX:    int x;
COMPLEX:    int a;
COMPLEX:    float b;
COMPLEX:}

LIST:  name = "_List", size = 12, decl = ClassLayoutTest.cpp:45
LIST-SAME: struct _List {
LIST:    _List *current;
LIST:    _List *previous;
LIST:    _List *next;
LIST:}

UNNAMED-STRUCT:  name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52
UNNAMED-STRUCT-SAME: struct UnnamedStruct {
UNNAMED-STRUCT:   int a;
UNNAMED-STRUCT:}

BASE:  name = "Base", size = 4,  decl = ClassLayoutTest.cpp:59
BASE-SAME: class Base {
BASE:    int a;
BASE:    Base();
BASE:    ~Base();
BASE:    int Get();
BASE:}

FRIEND:  name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70
FRIEND-SAME: class Friend {
FRIEND:    int f();
FRIEND: }

CLASS:  name = "Class", size = 88, decl = ClassLayoutTest.cpp:74
CLASS-SAME: class Class : public MemberTest::Base {
CLASS:    static int m_static;
CLASS:    int m_public;
CLASS:    Struct m_struct;
CLASS:    Union m_union;
CLASS:    int m_private;
CLASS:    int m_protected;
CLASS:    Class();
CLASS:    Class(int);
CLASS:    ~Class();
CLASS:    static int {{.*}}StaticMemberFunc(int, ...);
CLASS:    int Get();
CLASS:    int f(MemberTest::Friend);
CLASS:    bool operator==(const MemberTest::Class &)
CLASS:}