[llvm] r280769 - Re-add "Make FieldList records print as a YAML sequence"

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 6 16:45:47 PDT 2016


Author: zturner
Date: Tue Sep  6 18:45:47 2016
New Revision: 280769

URL: http://llvm.org/viewvc/llvm-project?rev=280769&view=rev
Log:
Re-add "Make FieldList records print as a YAML sequence"

This was originally submitted in r280549, and reverted in r280577
due to breaking one MSVC buildbot.  The issue is that MSVC 2013
doesn't synthesize move constructors.  So even though i was
writing std::move(A) it was copying it, leading to a bogus ArrayRef.
The solution here is to simply remove the std::vector<> from the
type, since it is unused and unnecessary.  This way the ArrayRef
continues to point into the original memory backing the CVType.

Modified:
    llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-types.test
    llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.cpp
    llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.h
    llvm/trunk/tools/llvm-pdbdump/PdbYaml.h

Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-types.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-types.test?rev=280769&r1=280768&r2=280769&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-types.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-types.test Tue Sep  6 18:45:47 2016
@@ -1,1087 +1,1087 @@
-; RUN: llvm-pdbdump pdb2yaml -tpi-stream %p/Inputs/empty.pdb \
-; RUN:   | FileCheck -check-prefix=YAML %s
-
-YAML: ---
-YAML: MSF:             
-YAML:   SuperBlock:      
-YAML:     BlockSize:       4096
-YAML:     FreeBlockMap:    2
-YAML:     NumBlocks:       25
-YAML:     NumDirectoryBytes: 136
-YAML:     Unknown1:        0
-YAML:     BlockMapAddr:    24
-YAML:   NumDirectoryBlocks: 1
-YAML:   DirectoryBlocks: [ 23 ]
-YAML:   NumStreams:      0
-YAML:   FileSize:        102400
-YAML: TpiStream:       
-YAML:   Version:         VC80
-YAML:   Records:         
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [  ]
-YAML:     - Kind:            LF_PROCEDURE
-YAML:       Procedure:       
-YAML:         ReturnType:      116
-YAML:         CallConv:        NearC
-YAML:         Options:         [ None ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            apartment
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            single
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           3
-YAML:           Name:            free
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           4
-YAML:           Name:            neutral
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           5
-YAML:           Name:            both
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  5
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4098
-YAML:         Name:            '__vc_attributes::threadingAttribute::threading_e'
-YAML:         UniqueName:      '.?AW4threading_e at threadingAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::threadingAttribute'
-YAML:         UniqueName:      '.?AUthreadingAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4100
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4099 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4100
-YAML:         ThisType:        4101
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4102
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4100
-YAML:         ThisType:        4101
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_METHODLIST
-YAML:       MethodOverloadList: 
-YAML:         Methods:         
-YAML:           - Type:            4103
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4104
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4099
-YAML:           Name:            threading_e
-YAML:         Kind:            LF_METHOD
-YAML:         OverloadedMethod: 
-YAML:           NumOverloads:    2
-YAML:           MethodList:      4105
-YAML:           Name:            threadingAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4099
-YAML:           FieldOffset:     0
-YAML:           Name:            value
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     4
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4106
-YAML:         Name:            '__vc_attributes::threadingAttribute'
-YAML:         UniqueName:      '.?AUthreadingAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            4
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           0
-YAML:           Name:            native
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            com
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            managed
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  3
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4108
-YAML:         Name:            '__vc_attributes::event_receiverAttribute::type_e'
-YAML:         UniqueName:      '.?AW4type_e at event_receiverAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::event_receiverAttribute'
-YAML:         UniqueName:      '.?AUevent_receiverAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4110
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4109, 48 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4110
-YAML:         ThisType:        4111
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  2
-YAML:         ArgumentList:    4112
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4109 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4110
-YAML:         ThisType:        4111
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4114
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4110
-YAML:         ThisType:        4111
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_METHODLIST
-YAML:       MethodOverloadList: 
-YAML:         Methods:         
-YAML:           - Type:            4113
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4115
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4116
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4109
-YAML:           Name:            type_e
-YAML:         Kind:            LF_METHOD
-YAML:         OverloadedMethod: 
-YAML:           NumOverloads:    3
-YAML:           MethodList:      4117
-YAML:           Name:            event_receiverAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4109
-YAML:           FieldOffset:     0
-YAML:           Name:            type
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            48
-YAML:           FieldOffset:     4
-YAML:           Name:            layout_dependent
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     6
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4118
-YAML:         Name:            '__vc_attributes::event_receiverAttribute'
-YAML:         UniqueName:      '.?AUevent_receiverAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            8
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           0
-YAML:           Name:            never
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            allowed
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            always
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  3
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4120
-YAML:         Name:            '__vc_attributes::aggregatableAttribute::type_e'
-YAML:         UniqueName:      '.?AW4type_e at aggregatableAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::aggregatableAttribute'
-YAML:         UniqueName:      '.?AUaggregatableAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4122
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4121 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4122
-YAML:         ThisType:        4123
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4124
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4122
-YAML:         ThisType:        4123
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_METHODLIST
-YAML:       MethodOverloadList: 
-YAML:         Methods:         
-YAML:           - Type:            4125
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4126
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4121
-YAML:           Name:            type_e
-YAML:         Kind:            LF_METHOD
-YAML:         OverloadedMethod: 
-YAML:           NumOverloads:    2
-YAML:           MethodList:      4127
-YAML:           Name:            aggregatableAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4121
-YAML:           FieldOffset:     0
-YAML:           Name:            type
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     4
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4128
-YAML:         Name:            '__vc_attributes::aggregatableAttribute'
-YAML:         UniqueName:      '.?AUaggregatableAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            4
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  3
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4108
-YAML:         Name:            '__vc_attributes::event_sourceAttribute::type_e'
-YAML:         UniqueName:      '.?AW4type_e at event_sourceAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           0
-YAML:           Name:            speed
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            size
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  2
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4131
-YAML:         Name:            '__vc_attributes::event_sourceAttribute::optimize_e'
-YAML:         UniqueName:      '.?AW4optimize_e at event_sourceAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::event_sourceAttribute'
-YAML:         UniqueName:      '.?AUevent_sourceAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4133
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4130 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4133
-YAML:         ThisType:        4134
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4135
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4133
-YAML:         ThisType:        4134
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_METHODLIST
-YAML:       MethodOverloadList: 
-YAML:         Methods:         
-YAML:           - Type:            4136
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4137
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4130
-YAML:           Name:            type_e
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4132
-YAML:           Name:            optimize_e
-YAML:         Kind:            LF_METHOD
-YAML:         OverloadedMethod: 
-YAML:           NumOverloads:    2
-YAML:           MethodList:      4138
-YAML:           Name:            event_sourceAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4130
-YAML:           FieldOffset:     0
-YAML:           Name:            type
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4132
-YAML:           FieldOffset:     4
-YAML:           Name:            optimize
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            48
-YAML:           FieldOffset:     8
-YAML:           Name:            decorate
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     7
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4139
-YAML:         Name:            '__vc_attributes::event_sourceAttribute'
-YAML:         UniqueName:      '.?AUevent_sourceAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            12
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            dll
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            exe
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           3
-YAML:           Name:            service
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           4
-YAML:           Name:            unspecified
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            EXE
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           3
-YAML:           Name:            SERVICE
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  6
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4141
-YAML:         Name:            '__vc_attributes::moduleAttribute::type_e'
-YAML:         UniqueName:      '.?AW4type_e at moduleAttribute@__vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::moduleAttribute'
-YAML:         UniqueName:      '.?AUmoduleAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4143
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_MODIFIER
-YAML:       Modifier:        
-YAML:         ModifiedType:    112
-YAML:         Modifiers:       [ None, Const ]
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4145
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4142, 4146, 4146, 4146, 116, 48, 4146, 116, 
-YAML:                            4146, 4146, 116, 48, 48, 4146, 4146 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4143
-YAML:         ThisType:        4144
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  15
-YAML:         ArgumentList:    4147
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4142 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4143
-YAML:         ThisType:        4144
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4149
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4143
-YAML:         ThisType:        4144
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  0
-YAML:         ArgumentList:    4096
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_METHODLIST
-YAML:       MethodOverloadList: 
-YAML:         Methods:         
-YAML:           - Type:            4148
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4150
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:           - Type:            4151
-YAML:             Kind:            Vanilla
-YAML:             Options:         [ None ]
-YAML:             Access:          Public
-YAML:             VFTableOffset:   -1
-YAML:             Name:            ''
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4142
-YAML:           Name:            type_e
-YAML:         Kind:            LF_METHOD
-YAML:         OverloadedMethod: 
-YAML:           NumOverloads:    3
-YAML:           MethodList:      4152
-YAML:           Name:            moduleAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4142
-YAML:           FieldOffset:     0
-YAML:           Name:            type
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     4
-YAML:           Name:            name
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     8
-YAML:           Name:            version
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     12
-YAML:           Name:            uuid
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            116
-YAML:           FieldOffset:     16
-YAML:           Name:            lcid
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            48
-YAML:           FieldOffset:     20
-YAML:           Name:            control
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     24
-YAML:           Name:            helpstring
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            116
-YAML:           FieldOffset:     28
-YAML:           Name:            helpstringcontext
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     32
-YAML:           Name:            helpstringdll
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     36
-YAML:           Name:            helpfile
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            116
-YAML:           FieldOffset:     40
-YAML:           Name:            helpcontext
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            48
-YAML:           FieldOffset:     44
-YAML:           Name:            hidden
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            48
-YAML:           FieldOffset:     45
-YAML:           Name:            restricted
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     48
-YAML:           Name:            custom
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4146
-YAML:           FieldOffset:     52
-YAML:           Name:            resource_name
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     19
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4153
-YAML:         Name:            '__vc_attributes::moduleAttribute'
-YAML:         UniqueName:      '.?AUmoduleAttribute at __vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            56
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           0
-YAML:           Name:            eAnyUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            eCoClassUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            eCOMInterfaceUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           6
-YAML:           Name:            eInterfaceUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           8
-YAML:           Name:            eMemberUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           16
-YAML:           Name:            eMethodUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           32
-YAML:           Name:            eInterfaceMethodUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           64
-YAML:           Name:            eInterfaceMemberUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           128
-YAML:           Name:            eCoClassMemberUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           256
-YAML:           Name:            eCoClassMethodUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           768
-YAML:           Name:            eGlobalMethodUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1024
-YAML:           Name:            eGlobalDataUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2048
-YAML:           Name:            eClassUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           4096
-YAML:           Name:            eInterfaceParameterUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           12288
-YAML:           Name:            eMethodParameterUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           16384
-YAML:           Name:            eIDLModuleUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           -32768
-YAML:           Name:            eAnonymousUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           65536
-YAML:           Name:            eTypedefUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           131072
-YAML:           Name:            eUnionUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           262144
-YAML:           Name:            eEnumUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           524288
-YAML:           Name:            eDefineTagUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1048576
-YAML:           Name:            eStructUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2097152
-YAML:           Name:            eLocalUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           4194304
-YAML:           Name:            ePropertyUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           8388608
-YAML:           Name:            eEventUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           16777216
-YAML:           Name:            eTemplateUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           16777216
-YAML:           Name:            eModuleUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           33554432
-YAML:           Name:            eIllegalUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           67108864
-YAML:           Name:            eAsynchronousUsage
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           4161535
-YAML:           Name:            eAnyIDLUsage
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  30
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4155
-YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute::usage_e'
-YAML:         UniqueName:      '.?AW4usage_e at usageAttribute@helper_attributes at __vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute'
-YAML:         UniqueName:      '.?AUusageAttribute at helper_attributes@__vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4157
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 117 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4157
-YAML:         ThisType:        4158
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4159
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4156
-YAML:           Name:            usage_e
-YAML:         Kind:            LF_ONEMETHOD
-YAML:         OneMethod:       
-YAML:           Type:            4160
-YAML:           Kind:            Vanilla
-YAML:           Options:         [ None ]
-YAML:           Access:          Public
-YAML:           VFTableOffset:   -1
-YAML:           Name:            usageAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            117
-YAML:           FieldOffset:     0
-YAML:           Name:            value
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     3
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4161
-YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute'
-YAML:         UniqueName:      '.?AUusageAttribute at helper_attributes@__vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            4
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           0
-YAML:           Name:            eBoolean
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           1
-YAML:           Name:            eInteger
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           2
-YAML:           Name:            eFloat
-YAML:         Kind:            LF_ENUMERATE
-YAML:         Enumerator:      
-YAML:           Access:          Public
-YAML:           Value:           3
-YAML:           Name:            eDouble
-YAML:     - Kind:            LF_ENUM
-YAML:       Enum:            
-YAML:         NumEnumerators:  4
-YAML:         Options:         [ None, Nested, HasUniqueName ]
-YAML:         FieldList:       4163
-YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e'
-YAML:         UniqueName:      '.?AW4type_e at v1_alttypeAttribute@helper_attributes at __vc_attributes@@'
-YAML:         UnderlyingType:  116
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     0
-YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
-YAML:         FieldList:       0
-YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute'
-YAML:         UniqueName:      '.?AUv1_alttypeAttribute at helper_attributes@__vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            0
-YAML:     - Kind:            LF_POINTER
-YAML:       Pointer:         
-YAML:         ReferentType:    4165
-YAML:         PtrKind:         Near32
-YAML:         Mode:            Pointer
-YAML:         Options:         [ None, Const ]
-YAML:         Size:            4
-YAML:     - Kind:            LF_ARGLIST
-YAML:       ArgList:         
-YAML:         ArgIndices:      [ 4164 ]
-YAML:     - Kind:            LF_MFUNCTION
-YAML:       MemberFunction:  
-YAML:         ReturnType:      3
-YAML:         ClassType:       4165
-YAML:         ThisType:        4166
-YAML:         CallConv:        ThisCall
-YAML:         Options:         [ None, Constructor ]
-YAML:         ParameterCount:  1
-YAML:         ArgumentList:    4167
-YAML:         ThisPointerAdjustment: 0
-YAML:     - Kind:            LF_FIELDLIST
-YAML:       FieldList:       
-YAML:         Kind:            LF_NESTTYPE
-YAML:         NestedType:      
-YAML:           Type:            4164
-YAML:           Name:            type_e
-YAML:         Kind:            LF_ONEMETHOD
-YAML:         OneMethod:       
-YAML:           Type:            4168
-YAML:           Kind:            Vanilla
-YAML:           Options:         [ None ]
-YAML:           Access:          Public
-YAML:           VFTableOffset:   -1
-YAML:           Name:            v1_alttypeAttribute
-YAML:         Kind:            LF_MEMBER
-YAML:         DataMember:      
-YAML:           Access:          Public
-YAML:           Type:            4164
-YAML:           FieldOffset:     0
-YAML:           Name:            type
-YAML:     - Kind:            LF_STRUCTURE
-YAML:       Class:           
-YAML:         MemberCount:     3
-YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
-YAML:         FieldList:       4169
-YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute'
-YAML:         UniqueName:      '.?AUv1_alttypeAttribute at helper_attributes@__vc_attributes@@'
-YAML:         Hfa:             None
-YAML:         WinRTKind:       None
-YAML:         DerivationList:  0
-YAML:         VTableShape:     0
-YAML:         Size:            4
-YAML: ...
+; RUN: llvm-pdbdump pdb2yaml -tpi-stream %p/Inputs/empty.pdb \
+; RUN:   | FileCheck -check-prefix=YAML %s
+
+YAML: ---
+YAML: MSF:             
+YAML:   SuperBlock:      
+YAML:     BlockSize:       4096
+YAML:     FreeBlockMap:    2
+YAML:     NumBlocks:       25
+YAML:     NumDirectoryBytes: 136
+YAML:     Unknown1:        0
+YAML:     BlockMapAddr:    24
+YAML:   NumDirectoryBlocks: 1
+YAML:   DirectoryBlocks: [ 23 ]
+YAML:   NumStreams:      0
+YAML:   FileSize:        102400
+YAML: TpiStream:       
+YAML:   Version:         VC80
+YAML:   Records:         
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [  ]
+YAML:     - Kind:            LF_PROCEDURE
+YAML:       Procedure:       
+YAML:         ReturnType:      116
+YAML:         CallConv:        NearC
+YAML:         Options:         [ None ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            apartment
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            single
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           3
+YAML:             Name:            free
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           4
+YAML:             Name:            neutral
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           5
+YAML:             Name:            both
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  5
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4098
+YAML:         Name:            '__vc_attributes::threadingAttribute::threading_e'
+YAML:         UniqueName:      '.?AW4threading_e at threadingAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::threadingAttribute'
+YAML:         UniqueName:      '.?AUthreadingAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4100
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4099 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4100
+YAML:         ThisType:        4101
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4102
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4100
+YAML:         ThisType:        4101
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_METHODLIST
+YAML:       MethodOverloadList: 
+YAML:         Methods:         
+YAML:           - Type:            4103
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4104
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4099
+YAML:             Name:            threading_e
+YAML:         - Kind:            LF_METHOD
+YAML:           OverloadedMethod: 
+YAML:             NumOverloads:    2
+YAML:             MethodList:      4105
+YAML:             Name:            threadingAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4099
+YAML:             FieldOffset:     0
+YAML:             Name:            value
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     4
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4106
+YAML:         Name:            '__vc_attributes::threadingAttribute'
+YAML:         UniqueName:      '.?AUthreadingAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            4
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           0
+YAML:             Name:            native
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            com
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            managed
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  3
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4108
+YAML:         Name:            '__vc_attributes::event_receiverAttribute::type_e'
+YAML:         UniqueName:      '.?AW4type_e at event_receiverAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::event_receiverAttribute'
+YAML:         UniqueName:      '.?AUevent_receiverAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4110
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4109, 48 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4110
+YAML:         ThisType:        4111
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  2
+YAML:         ArgumentList:    4112
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4109 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4110
+YAML:         ThisType:        4111
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4114
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4110
+YAML:         ThisType:        4111
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_METHODLIST
+YAML:       MethodOverloadList: 
+YAML:         Methods:         
+YAML:           - Type:            4113
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4115
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4116
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4109
+YAML:             Name:            type_e
+YAML:         - Kind:            LF_METHOD
+YAML:           OverloadedMethod: 
+YAML:             NumOverloads:    3
+YAML:             MethodList:      4117
+YAML:             Name:            event_receiverAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4109
+YAML:             FieldOffset:     0
+YAML:             Name:            type
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            48
+YAML:             FieldOffset:     4
+YAML:             Name:            layout_dependent
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     6
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4118
+YAML:         Name:            '__vc_attributes::event_receiverAttribute'
+YAML:         UniqueName:      '.?AUevent_receiverAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            8
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           0
+YAML:             Name:            never
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            allowed
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            always
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  3
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4120
+YAML:         Name:            '__vc_attributes::aggregatableAttribute::type_e'
+YAML:         UniqueName:      '.?AW4type_e at aggregatableAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::aggregatableAttribute'
+YAML:         UniqueName:      '.?AUaggregatableAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4122
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4121 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4122
+YAML:         ThisType:        4123
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4124
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4122
+YAML:         ThisType:        4123
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_METHODLIST
+YAML:       MethodOverloadList: 
+YAML:         Methods:         
+YAML:           - Type:            4125
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4126
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4121
+YAML:             Name:            type_e
+YAML:         - Kind:            LF_METHOD
+YAML:           OverloadedMethod: 
+YAML:             NumOverloads:    2
+YAML:             MethodList:      4127
+YAML:             Name:            aggregatableAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4121
+YAML:             FieldOffset:     0
+YAML:             Name:            type
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     4
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4128
+YAML:         Name:            '__vc_attributes::aggregatableAttribute'
+YAML:         UniqueName:      '.?AUaggregatableAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            4
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  3
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4108
+YAML:         Name:            '__vc_attributes::event_sourceAttribute::type_e'
+YAML:         UniqueName:      '.?AW4type_e at event_sourceAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           0
+YAML:             Name:            speed
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            size
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  2
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4131
+YAML:         Name:            '__vc_attributes::event_sourceAttribute::optimize_e'
+YAML:         UniqueName:      '.?AW4optimize_e at event_sourceAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::event_sourceAttribute'
+YAML:         UniqueName:      '.?AUevent_sourceAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4133
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4130 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4133
+YAML:         ThisType:        4134
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4135
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4133
+YAML:         ThisType:        4134
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_METHODLIST
+YAML:       MethodOverloadList: 
+YAML:         Methods:         
+YAML:           - Type:            4136
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4137
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4130
+YAML:             Name:            type_e
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4132
+YAML:             Name:            optimize_e
+YAML:         - Kind:            LF_METHOD
+YAML:           OverloadedMethod: 
+YAML:             NumOverloads:    2
+YAML:             MethodList:      4138
+YAML:             Name:            event_sourceAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4130
+YAML:             FieldOffset:     0
+YAML:             Name:            type
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4132
+YAML:             FieldOffset:     4
+YAML:             Name:            optimize
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            48
+YAML:             FieldOffset:     8
+YAML:             Name:            decorate
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     7
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4139
+YAML:         Name:            '__vc_attributes::event_sourceAttribute'
+YAML:         UniqueName:      '.?AUevent_sourceAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            12
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            dll
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            exe
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           3
+YAML:             Name:            service
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           4
+YAML:             Name:            unspecified
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            EXE
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           3
+YAML:             Name:            SERVICE
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  6
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4141
+YAML:         Name:            '__vc_attributes::moduleAttribute::type_e'
+YAML:         UniqueName:      '.?AW4type_e at moduleAttribute@__vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::moduleAttribute'
+YAML:         UniqueName:      '.?AUmoduleAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4143
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_MODIFIER
+YAML:       Modifier:        
+YAML:         ModifiedType:    112
+YAML:         Modifiers:       [ None, Const ]
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4145
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4142, 4146, 4146, 4146, 116, 48, 4146, 116, 
+YAML:                            4146, 4146, 116, 48, 48, 4146, 4146 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4143
+YAML:         ThisType:        4144
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  15
+YAML:         ArgumentList:    4147
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4142 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4143
+YAML:         ThisType:        4144
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4149
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4143
+YAML:         ThisType:        4144
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  0
+YAML:         ArgumentList:    4096
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_METHODLIST
+YAML:       MethodOverloadList: 
+YAML:         Methods:         
+YAML:           - Type:            4148
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4150
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:           - Type:            4151
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            ''
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4142
+YAML:             Name:            type_e
+YAML:         - Kind:            LF_METHOD
+YAML:           OverloadedMethod: 
+YAML:             NumOverloads:    3
+YAML:             MethodList:      4152
+YAML:             Name:            moduleAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4142
+YAML:             FieldOffset:     0
+YAML:             Name:            type
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     4
+YAML:             Name:            name
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     8
+YAML:             Name:            version
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     12
+YAML:             Name:            uuid
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            116
+YAML:             FieldOffset:     16
+YAML:             Name:            lcid
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            48
+YAML:             FieldOffset:     20
+YAML:             Name:            control
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     24
+YAML:             Name:            helpstring
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            116
+YAML:             FieldOffset:     28
+YAML:             Name:            helpstringcontext
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     32
+YAML:             Name:            helpstringdll
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     36
+YAML:             Name:            helpfile
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            116
+YAML:             FieldOffset:     40
+YAML:             Name:            helpcontext
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            48
+YAML:             FieldOffset:     44
+YAML:             Name:            hidden
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            48
+YAML:             FieldOffset:     45
+YAML:             Name:            restricted
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     48
+YAML:             Name:            custom
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4146
+YAML:             FieldOffset:     52
+YAML:             Name:            resource_name
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     19
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4153
+YAML:         Name:            '__vc_attributes::moduleAttribute'
+YAML:         UniqueName:      '.?AUmoduleAttribute at __vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            56
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           0
+YAML:             Name:            eAnyUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            eCoClassUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            eCOMInterfaceUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           6
+YAML:             Name:            eInterfaceUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           8
+YAML:             Name:            eMemberUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           16
+YAML:             Name:            eMethodUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           32
+YAML:             Name:            eInterfaceMethodUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           64
+YAML:             Name:            eInterfaceMemberUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           128
+YAML:             Name:            eCoClassMemberUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           256
+YAML:             Name:            eCoClassMethodUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           768
+YAML:             Name:            eGlobalMethodUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1024
+YAML:             Name:            eGlobalDataUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2048
+YAML:             Name:            eClassUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           4096
+YAML:             Name:            eInterfaceParameterUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           12288
+YAML:             Name:            eMethodParameterUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           16384
+YAML:             Name:            eIDLModuleUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           -32768
+YAML:             Name:            eAnonymousUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           65536
+YAML:             Name:            eTypedefUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           131072
+YAML:             Name:            eUnionUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           262144
+YAML:             Name:            eEnumUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           524288
+YAML:             Name:            eDefineTagUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1048576
+YAML:             Name:            eStructUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2097152
+YAML:             Name:            eLocalUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           4194304
+YAML:             Name:            ePropertyUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           8388608
+YAML:             Name:            eEventUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           16777216
+YAML:             Name:            eTemplateUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           16777216
+YAML:             Name:            eModuleUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           33554432
+YAML:             Name:            eIllegalUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           67108864
+YAML:             Name:            eAsynchronousUsage
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           4161535
+YAML:             Name:            eAnyIDLUsage
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  30
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4155
+YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute::usage_e'
+YAML:         UniqueName:      '.?AW4usage_e at usageAttribute@helper_attributes at __vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute'
+YAML:         UniqueName:      '.?AUusageAttribute at helper_attributes@__vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4157
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 117 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4157
+YAML:         ThisType:        4158
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4159
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4156
+YAML:             Name:            usage_e
+YAML:         - Kind:            LF_ONEMETHOD
+YAML:           OneMethod:       
+YAML:             Type:            4160
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            usageAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            117
+YAML:             FieldOffset:     0
+YAML:             Name:            value
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     3
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4161
+YAML:         Name:            '__vc_attributes::helper_attributes::usageAttribute'
+YAML:         UniqueName:      '.?AUusageAttribute at helper_attributes@__vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            4
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           0
+YAML:             Name:            eBoolean
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           1
+YAML:             Name:            eInteger
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           2
+YAML:             Name:            eFloat
+YAML:         - Kind:            LF_ENUMERATE
+YAML:           Enumerator:      
+YAML:             Access:          Public
+YAML:             Value:           3
+YAML:             Name:            eDouble
+YAML:     - Kind:            LF_ENUM
+YAML:       Enum:            
+YAML:         NumEnumerators:  4
+YAML:         Options:         [ None, Nested, HasUniqueName ]
+YAML:         FieldList:       4163
+YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute::type_e'
+YAML:         UniqueName:      '.?AW4type_e at v1_alttypeAttribute@helper_attributes at __vc_attributes@@'
+YAML:         UnderlyingType:  116
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     0
+YAML:         Options:         [ None, ForwardReference, HasUniqueName ]
+YAML:         FieldList:       0
+YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute'
+YAML:         UniqueName:      '.?AUv1_alttypeAttribute at helper_attributes@__vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            0
+YAML:     - Kind:            LF_POINTER
+YAML:       Pointer:         
+YAML:         ReferentType:    4165
+YAML:         PtrKind:         Near32
+YAML:         Mode:            Pointer
+YAML:         Options:         [ None, Const ]
+YAML:         Size:            4
+YAML:     - Kind:            LF_ARGLIST
+YAML:       ArgList:         
+YAML:         ArgIndices:      [ 4164 ]
+YAML:     - Kind:            LF_MFUNCTION
+YAML:       MemberFunction:  
+YAML:         ReturnType:      3
+YAML:         ClassType:       4165
+YAML:         ThisType:        4166
+YAML:         CallConv:        ThisCall
+YAML:         Options:         [ None, Constructor ]
+YAML:         ParameterCount:  1
+YAML:         ArgumentList:    4167
+YAML:         ThisPointerAdjustment: 0
+YAML:     - Kind:            LF_FIELDLIST
+YAML:       FieldList:       
+YAML:         - Kind:            LF_NESTTYPE
+YAML:           NestedType:      
+YAML:             Type:            4164
+YAML:             Name:            type_e
+YAML:         - Kind:            LF_ONEMETHOD
+YAML:           OneMethod:       
+YAML:             Type:            4168
+YAML:             Kind:            Vanilla
+YAML:             Options:         [ None ]
+YAML:             Access:          Public
+YAML:             VFTableOffset:   -1
+YAML:             Name:            v1_alttypeAttribute
+YAML:         - Kind:            LF_MEMBER
+YAML:           DataMember:      
+YAML:             Access:          Public
+YAML:             Type:            4164
+YAML:             FieldOffset:     0
+YAML:             Name:            type
+YAML:     - Kind:            LF_STRUCTURE
+YAML:       Class:           
+YAML:         MemberCount:     3
+YAML:         Options:         [ None, HasConstructorOrDestructor, ContainsNestedClass, HasUniqueName ]
+YAML:         FieldList:       4169
+YAML:         Name:            '__vc_attributes::helper_attributes::v1_alttypeAttribute'
+YAML:         UniqueName:      '.?AUv1_alttypeAttribute at helper_attributes@__vc_attributes@@'
+YAML:         Hfa:             None
+YAML:         WinRTKind:       None
+YAML:         DerivationList:  0
+YAML:         VTableShape:     0
+YAML:         Size:            4
+YAML: ...

Modified: llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.cpp?rev=280769&r1=280768&r2=280769&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.cpp Tue Sep  6 18:45:47 2016
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "CodeViewYaml.h"
+#include "PdbYaml.h"
 
 #include "llvm/DebugInfo/CodeView/CVTypeVisitor.h"
 #include "llvm/DebugInfo/CodeView/EnumTables.h"
@@ -25,6 +26,35 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(OneMethodRe
 LLVM_YAML_IS_SEQUENCE_VECTOR(VFTableSlotKind)
 LLVM_YAML_IS_SEQUENCE_VECTOR(StringRef)
 LLVM_YAML_IS_SEQUENCE_VECTOR(CVType)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::pdb::yaml::PdbTpiRecord)
+
+namespace {
+struct FieldListRecordSplitter : public TypeVisitorCallbacks {
+public:
+  explicit FieldListRecordSplitter(
+      std::vector<llvm::pdb::yaml::PdbTpiRecord> &Records)
+      : Records(Records) {}
+
+#define TYPE_RECORD(EnumName, EnumVal, Name)
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \
+  Error visitKnownRecord(const CVType &CVT, Name##Record &Record) override {   \
+    visitKnownRecordImpl(CVT);                                                 \
+    return Error::success();                                                   \
+  }
+#include "llvm/DebugInfo/CodeView/TypeRecords.def"
+
+private:
+  void visitKnownRecordImpl(const CVType &CVT) {
+    llvm::pdb::yaml::PdbTpiRecord R;
+    R.Record = CVT;
+    Records.push_back(std::move(R));
+  }
+
+  std::vector<llvm::pdb::yaml::PdbTpiRecord> &Records;
+};
+}
 
 namespace llvm {
 namespace yaml {
@@ -518,3 +548,15 @@ llvm::codeview::yaml::YamlTypeDumperCall
   YamlIO.mapRequired("Kind", K);
   return K;
 }
+
+void llvm::codeview::yaml::YamlTypeDumperCallbacks::visitKnownRecordImpl(
+    const char *Name, const CVType &Type, FieldListRecord &FieldList) {
+
+  std::vector<llvm::pdb::yaml::PdbTpiRecord> Records;
+  if (YamlIO.outputting()) {
+    FieldListRecordSplitter Splitter(Records);
+    CVTypeVisitor V(Splitter);
+    consumeError(V.visitFieldListMemberStream(FieldList.Data));
+  }
+  YamlIO.mapRequired(Name, Records);
+}

Modified: llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.h?rev=280769&r1=280768&r2=280769&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.h (original)
+++ llvm/trunk/tools/llvm-pdbdump/CodeViewYaml.h Tue Sep  6 18:45:47 2016
@@ -27,7 +27,7 @@ public:
 #define TYPE_RECORD(EnumName, EnumVal, Name)                                   \
   Error visitKnownRecord(const CVRecord<TypeLeafKind> &CVR,                    \
                          Name##Record &Record) override {                      \
-    YamlIO.mapRequired(#Name, Record);                                         \
+    visitKnownRecordImpl(#Name, CVR, Record);                                  \
     return Error::success();                                                   \
   }
 #define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \
@@ -37,6 +37,14 @@ public:
 #include "llvm/DebugInfo/CodeView/TypeRecords.def"
 
 private:
+  template <typename T>
+  void visitKnownRecordImpl(const char *Name, const CVType &Type, T &Record) {
+    YamlIO.mapRequired(Name, Record);
+  }
+
+  void visitKnownRecordImpl(const char *Name, const CVType &Type,
+                            FieldListRecord &FieldList);
+
   llvm::yaml::IO &YamlIO;
 };
 }

Modified: llvm/trunk/tools/llvm-pdbdump/PdbYaml.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.h?rev=280769&r1=280768&r2=280769&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/PdbYaml.h (original)
+++ llvm/trunk/tools/llvm-pdbdump/PdbYaml.h Tue Sep  6 18:45:47 2016
@@ -70,7 +70,6 @@ struct PdbDbiStream {
 };
 
 struct PdbTpiRecord {
-  std::vector<uint8_t> RecordData;
   codeview::CVType Record;
 };
 




More information about the llvm-commits mailing list