llvm/llvm/test/DebugInfo/PDB/Native/pdb-native-function-signatures.test

; Test that the native PDB reader can enumerate pointer types.  The output
; being checked against is golden output generated by llvm-pdbutil without
; the -native flag.  Then we check that we generate the same output.

; RUN: llvm-pdbutil pretty -native -funcsigs %p/../Inputs/every-function.pdb \
; RUN:     | FileCheck -check-prefix=PRETTY %s

; RUN: llvm-pdbutil diadump -native -funcsigs %p/../Inputs/every-function.pdb \
; RUN:     | FileCheck -check-prefix=DUMP %s


; PRETTY:      void __cdecl (void*, unsigned int)
; PRETTY-NEXT: void __cdecl (void*, unsigned __int64)
; PRETTY-NEXT: int __cdecl ()
; PRETTY-NEXT: int ()
; PRETTY-NEXT: int __fastcall ()
; PRETTY-NEXT: int __vectorcall ()
; PRETTY-NEXT: int __cdecl (int)
; PRETTY-NEXT: int __cdecl (int, char)
; PRETTY-NEXT: void __cdecl (Struct)
; PRETTY-NEXT: void (Struct::)()
; PRETTY-NEXT: int (Struct::)()
; PRETTY-NEXT: void (Struct::)()
; PRETTY-NEXT: void (Struct::)()
; PRETTY-NEXT: void (Struct::)()
; PRETTY-NEXT: void (Struct::)()
; PRETTY-NEXT: void __cdecl (const int)
; PRETTY-NEXT: void __cdecl (Struct)
; PRETTY-NEXT: void __cdecl (int*)
; PRETTY-NEXT: void __cdecl (Struct*)
; PRETTY-NEXT: void __cdecl (const int*)
; PRETTY-NEXT: void __cdecl (Struct*)
; PRETTY-NEXT: Struct __cdecl ()
; PRETTY-NEXT: void (Derived::)(Derived*)
; PRETTY-NEXT: void (Derived::)(Derived&)
; PRETTY-NEXT: void (Derived::)()
; PRETTY-NEXT: void (Derived::)()
; PRETTY-NEXT: Derived& (Derived::)(Derived*)
; PRETTY-NEXT: Derived& (Derived::)(Derived&)
; PRETTY-NEXT: void (Derived::)()
; PRETTY-NEXT: void* (Derived::)(unsigned int)
; PRETTY-NEXT: void (__vc_attributes::event_sourceAttribute::)(__vc_attributes::event_sourceAttribute::type_e)
; PRETTY-NEXT: void (__vc_attributes::event_sourceAttribute::)()
; PRETTY-NEXT: void (__vc_attributes::helper_attributes::v1_alttypeAttribute::)(__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e)
; PRETTY-NEXT: void (__vc_attributes::helper_attributes::usageAttribute::)(unsigned int)
; PRETTY-NEXT: void (__vc_attributes::threadingAttribute::)(__vc_attributes::threadingAttribute::threading_e)
; PRETTY-NEXT: void (__vc_attributes::threadingAttribute::)()
; PRETTY-NEXT: void (__vc_attributes::aggregatableAttribute::)(__vc_attributes::aggregatableAttribute::type_e)
; PRETTY-NEXT: void (__vc_attributes::aggregatableAttribute::)()
; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)(__vc_attributes::event_receiverAttribute::type_e, bool)
; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)(__vc_attributes::event_receiverAttribute::type_e)
; PRETTY-NEXT: void (__vc_attributes::event_receiverAttribute::)()
; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)(__vc_attributes::moduleAttribute::type_e, const char*, const char*, const char*, int, bool, const char*, int, const char*, const char*, int, bool, bool, const char*, const char*)
; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)(__vc_attributes::moduleAttribute::type_e)
; PRETTY-NEXT: void (__vc_attributes::moduleAttribute::)()
; PRETTY-NEXT: void (Base1::)()
; PRETTY-NEXT: void (Base1::)(Base1&)
; PRETTY-NEXT: void (Base1::)()
; PRETTY-NEXT: Base1& (Base1::)(Base1&)
; PRETTY-NEXT: void* (Base1::)(unsigned int)
; PRETTY-NEXT: void (Base2::)(Base2*)
; PRETTY-NEXT: void (Base2::)(Base2&)
; PRETTY-NEXT: void (Base2::)()
; PRETTY-NEXT: void (Base2::)()
; PRETTY-NEXT: Base2& (Base2::)(Base2*)
; PRETTY-NEXT: Base2& (Base2::)(Base2&)
; PRETTY-NEXT: void (Base2::)()
; PRETTY-NEXT: void* (Base2::)(unsigned int)
; PRETTY-NEXT: void __cdecl ()

; DUMP:      {
; DUMP-NEXT:   symIndexId: 2
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 4
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 5
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 7
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __stdcall
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 8
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __fastcall
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 9
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __vectorcall
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 10
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 11
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 12
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 13
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 15
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 6
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 16
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 17
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 18
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 19
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 20
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 21
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 22
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 23
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 24
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 25
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 26
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 14
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 1
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 27
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 29
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 30
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 31
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 4
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 32
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 33
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 34
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 33
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 35
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 36
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 37
; DUMP-NEXT:   thisAdjust: 4
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 38
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 40
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 41
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 43
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 45
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 47
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 48
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 50
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 51
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 3
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 53
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 54
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 55
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 16
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 57
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 58
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 59
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 61
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 62
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 63
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 64
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 65
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 37
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 66
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 68
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 69
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 1
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 1
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 70
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 4
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 71
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 72
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 73
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 72
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 74
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 1
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   thisAdjust: 0
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 75
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __thiscall
; DUMP-NEXT:   count: 2
; DUMP-NEXT:   typeId: 37
; DUMP-NEXT:   thisAdjust: 4
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }
; DUMP-NEXT: {
; DUMP-NEXT:   symIndexId: 76
; DUMP-NEXT:   symTag: FunctionSig
; DUMP-NEXT:   callingConvention: __cdecl
; DUMP-NEXT:   count: 0
; DUMP-NEXT:   typeId: 3
; DUMP-NEXT:   constructor: 0
; DUMP-NEXT:   constType: 0
; DUMP-NEXT:   isConstructorVirtualBase: 0
; DUMP-NEXT:   isCxxReturnUdt: 0
; DUMP-NEXT:   unalignedType: 0
; DUMP-NEXT:   volatileType: 0
; DUMP-NEXT: }