brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 14b44ae Raw
82 lines · cpp
1// Compile with "cl /c /Zi /GR- symbolformat.cpp"2// Compile symbolformat-fpo.cpp (see file for instructions)3// Link with "link symbolformat.obj symbolformat-fpo.obj /debug /nodefaultlib4//    /entry:main /out:symbolformat.exe"5 6int __cdecl _purecall(void) { return 0; }7 8enum TestEnum {9  Value,10  Value10 = 1011};12 13enum class TestEnumClass {14  Value,15  Value10 = 1016};17 18struct A {19  virtual void PureFunc() = 0 {}20  virtual void VirtualFunc() {}21  void RegularFunc() {}22};23 24struct VirtualBase {25};26 27struct B : public A, protected virtual VirtualBase {28  void PureFunc() override {}29};30 31struct MemberTest {32  enum NestedEnum {33    FirstVal,34    SecondVal35  };36 37  typedef int NestedTypedef;38 39  NestedEnum m_nested_enum;40  NestedTypedef m_typedef;41  bool m_bool;42  char m_char;43  wchar_t m_wchar_t;44  int m_int;45  unsigned m_unsigned;46  long m_long;47  unsigned long m_unsigned_long;48  __int64 m_int64;49  unsigned __int64 m_unsigned_int64;50  float m_float;51  double m_double;52  void (*m_pfn_2_args)(int, double);53  int m_multidimensional_array[2][3];54};55 56typedef int IntType;57typedef A ClassAType;58 59int g_global_int;60void *g_global_pointer = nullptr;61 62typedef int int_array[3];63int_array g_array = { 1, 2, 3 };64int_array *g_pointer_to_array = &g_array;65const int *g_pointer_to_const_int = nullptr;66int * const g_const_pointer_to_int = nullptr;67const int * const g_const_pointer_to_const_int = nullptr;68 69int main(int argc, char **argv) {70  // Force symbol references so the linker generates debug info71  B b;72  MemberTest members;73  auto PureAddr = &B::PureFunc;74  auto VirtualAddr = &A::PureFunc;75  auto RegularAddr = &A::RegularFunc;76  TestEnum Enum = Value;77  TestEnumClass EnumClass = TestEnumClass::Value10;78  IntType Int = 12;79  ClassAType *ClassA = &b;80  return 0;81}82