OSDN Git Service

Re-add "Make FieldList records print as a YAML sequence"
authorZachary Turner <zturner@google.com>
Tue, 6 Sep 2016 23:45:47 +0000 (23:45 +0000)
committerZachary Turner <zturner@google.com>
Tue, 6 Sep 2016 23:45:47 +0000 (23:45 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280769 91177308-0d34-0410-b5e6-96231b3b80d8

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

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