mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-01 19:29:22 +00:00
A short list of some of the improvements: 1) Now supports -all command line argument, which implies many other command line arguments to simplify usage. 2) Now supports -no-compiler-generated command line argument to exclude compiler generated types. 3) Prints base class list. 4) -class-definitions implies -types. 5) Proper display of bitfields. 6) Can now distinguish between struct/class/interface/union. And a few other minor tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230933 91177308-0d34-0410-b5e6-96231b3b80d8
65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
// Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp"
|
|
// Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main"
|
|
|
|
namespace MembersTest {
|
|
class A {
|
|
public:
|
|
typedef int NestedTypedef;
|
|
enum NestedEnum {
|
|
NestedEnumValue1
|
|
};
|
|
|
|
void MemberFunc() {}
|
|
|
|
private:
|
|
int IntMemberVar;
|
|
double DoubleMemberVar;
|
|
};
|
|
}
|
|
|
|
namespace GlobalsTest {
|
|
int IntVar;
|
|
double DoubleVar;
|
|
|
|
typedef int Typedef;
|
|
enum Enum {
|
|
Val1
|
|
} EnumVar;
|
|
Typedef TypedefVar;
|
|
}
|
|
|
|
namespace BaseClassTest {
|
|
class A {};
|
|
class B : public virtual A {};
|
|
class C : public virtual A {};
|
|
class D : protected B, private C {};
|
|
}
|
|
|
|
namespace UdtKindTest {
|
|
struct A {};
|
|
class B {};
|
|
union C {};
|
|
}
|
|
|
|
namespace BitFieldTest {
|
|
struct A {
|
|
int Bits1 : 1;
|
|
int Bits2 : 2;
|
|
int Bits3 : 3;
|
|
int Bits4 : 4;
|
|
int Bits22 : 22;
|
|
int Offset0x04;
|
|
};
|
|
};
|
|
|
|
int main(int argc, char **argv) {
|
|
MembersTest::A v1;
|
|
v1.MemberFunc();
|
|
BaseClassTest::D v2;
|
|
UdtKindTest::A v3;
|
|
UdtKindTest::B v4;
|
|
UdtKindTest::C v5;
|
|
BitFieldTest::A v7;
|
|
return 0;
|
|
}
|