<div dir="ltr">Hi Zach,<div><br></div><div>I think your change caused a number of test failures on the sanitizer-x86_64-linux-fast bot.</div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-llvm%20ubsan/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-llvm%20ubsan/logs/stdio</a><br></div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-lld%20asan/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/5323/steps/check-lld%20asan/logs/stdio</a><br></div><div>Can you please take a look?</div><div><br></div><div>Thanks,</div><div>Peter</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 30, 2017 at 2:53 PM, Zachary Turner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zturner<br>
Date: Tue May 30 16:53:05 2017<br>
New Revision: 304248<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=304248&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=304248&view=rev</a><br>
Log:<br>
[CodeView] Move CodeView YAML code to ObjectYAML.<br>
<br>
This is the beginning of an effort to move the codeview yaml<br>
reader / writer into ObjectYAML so that it can be shared.<br>
Currently the only consumer / producer of CodeView YAML is<br>
llvm-pdbdump, but CodeView can exist outside of PDB files, and<br>
indeed is put into object files and passed to the linker to<br>
produce PDB files.  Furthermore, there are subtle differences<br>
in the types of records that show up in object file CodeView<br>
vs PDB file CodeView, but they are otherwise 99% the same.<br>
<br>
By having this code in ObjectYAML, we can have llvm-pdbdump<br>
reuse this code, while teaching obj2yaml and yaml2obj to use<br>
this syntax for dealing with object files that can contain<br>
CodeView.<br>
<br>
This patch only adds support for CodeView type information<br>
to ObjectYAML.  Subsequent patches will add support for<br>
CodeView symbol information.<br>
<br>
Added:<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def<br>
    llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h<br>
    llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp<br>
Removed:<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h<br>
Modified:<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h<br>
    llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h<br>
    llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h<br>
    llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp<br>
    llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp<br>
    llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp<br>
    llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp<br>
    llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp<br>
    llvm/trunk/lib/MC/MCCodeView.<wbr>cpp<br>
    llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt<br>
    llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h<br>
    llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp<br>
<br>
Removed: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def?rev=304247&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CVSymbolTypes.def (removed)<br>
@@ -1,258 +0,0 @@<br>
-//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef CV_SYMBOL<br>
-#define CV_SYMBOL(ename, value)<br>
-#endif<br>
-<br>
-#ifndef SYMBOL_RECORD<br>
-#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)<br>
-#endif<br>
-<br>
-#ifndef SYMBOL_RECORD_ALIAS<br>
-#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name)                   \<br>
-  SYMBOL_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-// 16 bit symbol types. Not very useful, provided only for reference.<br>
-CV_SYMBOL(S_COMPILE       , 0x0001)<br>
-CV_SYMBOL(S_REGISTER_16t  , 0x0002)<br>
-CV_SYMBOL(S_CONSTANT_16t  , 0x0003)<br>
-CV_SYMBOL(S_UDT_16t       , 0x0004)<br>
-CV_SYMBOL(S_SSEARCH       , 0x0005)<br>
-CV_SYMBOL(S_SKIP          , 0x0007)<br>
-CV_SYMBOL(S_CVRESERVE     , 0x0008)<br>
-CV_SYMBOL(S_OBJNAME_ST    , 0x0009)<br>
-CV_SYMBOL(S_ENDARG        , 0x000a)<br>
-CV_SYMBOL(S_COBOLUDT_16t  , 0x000b)<br>
-CV_SYMBOL(S_MANYREG_16t   , 0x000c)<br>
-CV_SYMBOL(S_RETURN        , 0x000d)<br>
-CV_SYMBOL(S_ENTRYTHIS     , 0x000e)<br>
-CV_SYMBOL(S_BPREL16       , 0x0100)<br>
-CV_SYMBOL(S_LDATA16       , 0x0101)<br>
-CV_SYMBOL(S_GDATA16       , 0x0102)<br>
-CV_SYMBOL(S_PUB16         , 0x0103)<br>
-CV_SYMBOL(S_LPROC16       , 0x0104)<br>
-CV_SYMBOL(S_GPROC16       , 0x0105)<br>
-CV_SYMBOL(S_THUNK16       , 0x0106)<br>
-CV_SYMBOL(S_BLOCK16       , 0x0107)<br>
-CV_SYMBOL(S_WITH16        , 0x0108)<br>
-CV_SYMBOL(S_LABEL16       , 0x0109)<br>
-CV_SYMBOL(S_CEXMODEL16    , 0x010a)<br>
-CV_SYMBOL(S_VFTABLE16     , 0x010b)<br>
-CV_SYMBOL(S_REGREL16      , 0x010c)<br>
-CV_SYMBOL(S_BPREL32_16t   , 0x0200)<br>
-CV_SYMBOL(S_LDATA32_16t   , 0x0201)<br>
-CV_SYMBOL(S_GDATA32_16t   , 0x0202)<br>
-CV_SYMBOL(S_PUB32_16t     , 0x0203)<br>
-CV_SYMBOL(S_LPROC32_16t   , 0x0204)<br>
-CV_SYMBOL(S_GPROC32_16t   , 0x0205)<br>
-CV_SYMBOL(S_THUNK32_ST    , 0x0206)<br>
-CV_SYMBOL(S_BLOCK32_ST    , 0x0207)<br>
-CV_SYMBOL(S_WITH32_ST     , 0x0208)<br>
-CV_SYMBOL(S_LABEL32_ST    , 0x0209)<br>
-CV_SYMBOL(S_CEXMODEL32    , 0x020a)<br>
-CV_SYMBOL(S_VFTABLE32_16t , 0x020b)<br>
-CV_SYMBOL(S_REGREL32_16t  , 0x020c)<br>
-CV_SYMBOL(S_LTHREAD32_16t , 0x020d)<br>
-CV_SYMBOL(S_GTHREAD32_16t , 0x020e)<br>
-CV_SYMBOL(S_SLINK32       , 0x020f)<br>
-CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)<br>
-CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)<br>
-CV_SYMBOL(S_PROCREF_ST    , 0x0400)<br>
-CV_SYMBOL(S_DATAREF_ST    , 0x0401)<br>
-CV_SYMBOL(S_ALIGN         , 0x0402)<br>
-CV_SYMBOL(S_LPROCREF_ST   , 0x0403)<br>
-CV_SYMBOL(S_OEM           , 0x0404)<br>
-<br>
-// All post 16 bit symbol types have the 0x1000 bit set.<br>
-CV_SYMBOL(S_TI16_MAX      , 0x1000)<br>
-<br>
-// Mostly unused "start" symbol types.<br>
-CV_SYMBOL(S_REGISTER_ST   , 0x1001)<br>
-CV_SYMBOL(S_CONSTANT_ST   , 0x1002)<br>
-CV_SYMBOL(S_UDT_ST        , 0x1003)<br>
-CV_SYMBOL(S_COBOLUDT_ST   , 0x1004)<br>
-CV_SYMBOL(S_MANYREG_ST    , 0x1005)<br>
-CV_SYMBOL(S_BPREL32_ST    , 0x1006)<br>
-CV_SYMBOL(S_LDATA32_ST    , 0x1007)<br>
-CV_SYMBOL(S_GDATA32_ST    , 0x1008)<br>
-CV_SYMBOL(S_PUB32_ST      , 0x1009)<br>
-CV_SYMBOL(S_LPROC32_ST    , 0x100a)<br>
-CV_SYMBOL(S_GPROC32_ST    , 0x100b)<br>
-CV_SYMBOL(S_VFTABLE32     , 0x100c)<br>
-CV_SYMBOL(S_REGREL32_ST   , 0x100d)<br>
-CV_SYMBOL(S_LTHREAD32_ST  , 0x100e)<br>
-CV_SYMBOL(S_GTHREAD32_ST  , 0x100f)<br>
-CV_SYMBOL(S_LPROCMIPS_ST  , 0x1010)<br>
-CV_SYMBOL(S_GPROCMIPS_ST  , 0x1011)<br>
-<br>
-CV_SYMBOL(S_COMPILE2_ST   , 0x1013)<br>
-CV_SYMBOL(S_MANYREG2_ST   , 0x1014)<br>
-CV_SYMBOL(S_LPROCIA64_ST  , 0x1015)<br>
-CV_SYMBOL(S_GPROCIA64_ST  , 0x1016)<br>
-CV_SYMBOL(S_LOCALSLOT_ST  , 0x1017)<br>
-CV_SYMBOL(S_PARAMSLOT_ST  , 0x1018)<br>
-CV_SYMBOL(S_ANNOTATION    , 0x1019)<br>
-CV_SYMBOL(S_GMANPROC_ST   , 0x101a)<br>
-CV_SYMBOL(S_LMANPROC_ST   , 0x101b)<br>
-CV_SYMBOL(S_RESERVED1     , 0x101c)<br>
-CV_SYMBOL(S_RESERVED2     , 0x101d)<br>
-CV_SYMBOL(S_RESERVED3     , 0x101e)<br>
-CV_SYMBOL(S_RESERVED4     , 0x101f)<br>
-CV_SYMBOL(S_LMANDATA_ST   , 0x1020)<br>
-CV_SYMBOL(S_GMANDATA_ST   , 0x1021)<br>
-CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)<br>
-CV_SYMBOL(S_MANREGISTER_ST, 0x1023)<br>
-CV_SYMBOL(S_MANSLOT_ST    , 0x1024)<br>
-CV_SYMBOL(S_MANMANYREG_ST , 0x1025)<br>
-CV_SYMBOL(S_MANREGREL_ST  , 0x1026)<br>
-CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)<br>
-CV_SYMBOL(S_MANTYPREF     , 0x1028)<br>
-CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)<br>
-<br>
-// End of S_*_ST symbols, which do not appear to be generated by modern<br>
-// compilers.<br>
-CV_SYMBOL(S_ST_MAX        , 0x1100)<br>
-<br>
-<br>
-CV_SYMBOL(S_WITH32        , 0x1104)<br>
-CV_SYMBOL(S_MANYREG       , 0x110a)<br>
-CV_SYMBOL(S_LPROCMIPS     , 0x1114)<br>
-CV_SYMBOL(S_GPROCMIPS     , 0x1115)<br>
-CV_SYMBOL(S_MANYREG2      , 0x1117)<br>
-CV_SYMBOL(S_LPROCIA64     , 0x1118)<br>
-CV_SYMBOL(S_GPROCIA64     , 0x1119)<br>
-CV_SYMBOL(S_LOCALSLOT     , 0x111a)<br>
-CV_SYMBOL(S_PARAMSLOT     , 0x111b)<br>
-<br>
-// Managed code symbols.<br>
-CV_SYMBOL(S_MANFRAMEREL   , 0x111e)<br>
-CV_SYMBOL(S_MANREGISTER   , 0x111f)<br>
-CV_SYMBOL(S_MANSLOT       , 0x1120)<br>
-CV_SYMBOL(S_MANMANYREG    , 0x1121)<br>
-CV_SYMBOL(S_MANREGREL     , 0x1122)<br>
-CV_SYMBOL(S_MANMANYREG2   , 0x1123)<br>
-CV_SYMBOL(S_UNAMESPACE    , 0x1124)<br>
-CV_SYMBOL(S_DATAREF       , 0x1126)<br>
-CV_SYMBOL(S_ANNOTATIONREF , 0x1128)<br>
-CV_SYMBOL(S_TOKENREF      , 0x1129)<br>
-CV_SYMBOL(S_GMANPROC      , 0x112a)<br>
-CV_SYMBOL(S_LMANPROC      , 0x112b)<br>
-CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)<br>
-CV_SYMBOL(S_ATTR_REGISTER , 0x112f)<br>
-CV_SYMBOL(S_ATTR_REGREL   , 0x1130)<br>
-CV_SYMBOL(S_ATTR_MANYREG  , 0x1131)<br>
-<br>
-<br>
-CV_SYMBOL(S_SEPCODE       , 0x1132)<br>
-CV_SYMBOL(S_LOCAL_2005    , 0x1133)<br>
-CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)<br>
-CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)<br>
-CV_SYMBOL(S_DISCARDED     , 0x113b)<br>
-<br>
-// Current symbol types for most procedures as of this writing.<br>
-CV_SYMBOL(S_LPROCMIPS_ID   , 0x1148)<br>
-CV_SYMBOL(S_GPROCMIPS_ID   , 0x1149)<br>
-CV_SYMBOL(S_LPROCIA64_ID   , 0x114a)<br>
-CV_SYMBOL(S_GPROCIA64_ID   , 0x114b)<br>
-<br>
-CV_SYMBOL(S_DEFRANGE_HLSL  , 0x1150)<br>
-CV_SYMBOL(S_GDATA_HLSL     , 0x1151)<br>
-CV_SYMBOL(S_LDATA_HLSL     , 0x1152)<br>
-CV_SYMBOL(S_LOCAL_DPC_<wbr>GROUPSHARED, 0x1154)<br>
-CV_SYMBOL(S_DEFRANGE_DPC_PTR_<wbr>TAG, 0x1157)<br>
-CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)<br>
-CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)<br>
-CV_SYMBOL(S_POGODATA       , 0x115c)<br>
-CV_SYMBOL(S_INLINESITE2    , 0x115d)<br>
-CV_SYMBOL(S_MOD_TYPEREF    , 0x115f)<br>
-CV_SYMBOL(S_REF_MINIPDB    , 0x1160)<br>
-CV_SYMBOL(S_PDBMAP         , 0x1161)<br>
-CV_SYMBOL(S_GDATA_HLSL32   , 0x1162)<br>
-CV_SYMBOL(S_LDATA_HLSL32   , 0x1163)<br>
-CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)<br>
-CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)<br>
-<br>
-// Known symbol types<br>
-SYMBOL_RECORD(S_END                  , 0x0006, ScopeEndSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
-SYMBOL_RECORD_ALIAS(S_PROC_<wbr>ID_END    , 0x114f, ProcEnd, ScopeEndSym)<br>
-<br>
-SYMBOL_RECORD(S_THUNK32       , 0x1102, Thunk32Sym)<br>
-SYMBOL_RECORD(S_TRAMPOLINE    , 0x112c, TrampolineSym)<br>
-SYMBOL_RECORD(S_SECTION       , 0x1136, SectionSym)<br>
-SYMBOL_RECORD(S_COFFGROUP     , 0x1137, CoffGroupSym)<br>
-SYMBOL_RECORD(S_EXPORT        , 0x1138, ExportSym)<br>
-<br>
-SYMBOL_RECORD(S_LPROC32       , 0x110f, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_GPROC32       , 0x1110, GlobalProcSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_ID     , 0x1146, ProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>GPROC32_ID     , 0x1147, GlobalProcIdSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC    , 0x1155, DPCProcSym, ProcSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)<br>
-<br>
-SYMBOL_RECORD(S_REGISTER      , 0x1106, RegisterSym)<br>
-SYMBOL_RECORD(S_PUB32         , 0x110e, PublicSym32)<br>
-<br>
-SYMBOL_RECORD(S_PROCREF       , 0x1125, ProcRefSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LPROCREF, 0x1127, LocalProcRef, ProcRefSym)<br>
-<br>
-<br>
-SYMBOL_RECORD(S_ENVBLOCK      , 0x113d, EnvBlockSym)<br>
-<br>
-SYMBOL_RECORD(S_INLINESITE     , 0x114d, InlineSiteSym)<br>
-SYMBOL_RECORD(S_LOCAL         , 0x113e, LocalSym)<br>
-SYMBOL_RECORD(S_DEFRANGE      , 0x113f, DefRangeSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER, 0x1141, DefRangeRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullSco<wbr>peSym)<br>
-SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER_REL, 0x1145, DefRangeRegisterRelSym)<br>
-SYMBOL_RECORD(S_BLOCK32       , 0x1103, BlockSym)<br>
-SYMBOL_RECORD(S_LABEL32       , 0x1105, LabelSym)<br>
-SYMBOL_RECORD(S_OBJNAME       , 0x1101, ObjNameSym)<br>
-SYMBOL_RECORD(S_COMPILE2      , 0x1116, Compile2Sym)<br>
-SYMBOL_RECORD(S_COMPILE3      , 0x113c, Compile3Sym)<br>
-SYMBOL_RECORD(S_FRAMEPROC     , 0x1012, FrameProcSym)<br>
-SYMBOL_RECORD(S_CALLSITEINFO  , 0x1139, CallSiteInfoSym)<br>
-SYMBOL_RECORD(S_FILESTATIC     , 0x1153, FileStaticSym)<br>
-SYMBOL_RECORD(S_HEAPALLOCSITE  , 0x115e, HeapAllocationSiteSym)<br>
-SYMBOL_RECORD(S_FRAMECOOKIE   , 0x113a, FrameCookieSym)<br>
-<br>
-SYMBOL_RECORD(S_CALLEES        , 0x115a, CallerSym)<br>
-SYMBOL_RECORD_ALIAS(S_CALLERS        , 0x115b, CalleeSym, CallerSym)<br>
-<br>
-SYMBOL_RECORD(S_UDT           , 0x1108, UDTSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>COBOLUDT      , 0x1109, CobolUDT, UDTSym)<br>
-<br>
-SYMBOL_RECORD(S_BUILDINFO      , 0x114c, BuildInfoSym)<br>
-SYMBOL_RECORD(S_BPREL32       , 0x110b, BPRelativeSym)<br>
-SYMBOL_RECORD(S_REGREL32      , 0x1111, RegRelativeSym)<br>
-<br>
-SYMBOL_RECORD(S_CONSTANT      , 0x1107, ConstantSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>MANCONSTANT   , 0x112d, ManagedConstant, ConstantSym)<br>
-<br>
-SYMBOL_RECORD(S_LDATA32       , 0x110c, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_GDATA32       , 0x110d, GlobalData, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>LMANDATA      , 0x111c, ManagedLocalData, DataSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>GMANDATA      , 0x111d, ManagedGlobalData, DataSym)<br>
-<br>
-SYMBOL_RECORD(S_LTHREAD32     , 0x1112, ThreadLocalDataSym)<br>
-SYMBOL_RECORD_ALIAS(S_<wbr>GTHREAD32     , 0x1113, GlobalTLS, ThreadLocalDataSym)<br>
-<br>
-<br>
-#undef CV_SYMBOL<br>
-#undef SYMBOL_RECORD<br>
-#undef SYMBOL_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeView.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/CodeView.h Tue May 30 16:53:05 2017<br>
@@ -6,6 +6,10 @@<br>
 // License. See LICENSE.TXT for details.<br>
 //<br>
 //===-------------------------<wbr>------------------------------<wbr>---------------===//<br>
+//<br>
+// Defines constants and basic types describing CodeView debug information.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
<br>
 #ifndef LLVM_DEBUGINFO_CODEVIEW_<wbr>CODEVIEW_H<br>
 #define LLVM_DEBUGINFO_CODEVIEW_<wbr>CODEVIEW_H<br>
@@ -22,28 +26,28 @@ namespace codeview {<br>
 /// documentation and headers talk about this as the "leaf" type.<br>
 enum class TypeRecordKind : uint16_t {<br>
 #define TYPE_RECORD(lf_ename, value, name) name = value,<br>
-#include "TypeRecords.def"<br>
+#include "CodeViewTypes.def"<br>
 };<br>
<br>
 /// Duplicate copy of the above enum, but using the official CV names. Useful<br>
 /// for reference purposes and when dealing with unknown record types.<br>
 enum TypeLeafKind : uint16_t {<br>
 #define CV_TYPE(name, val) name = val,<br>
-#include "TypeRecords.def"<br>
+#include "CodeViewTypes.def"<br>
 };<br>
<br>
 /// Distinguishes individual records in the Symbols subsection of a .debug$S<br>
 /// section. Equivalent to SYM_ENUM_e in cvinfo.h.<br>
 enum class SymbolRecordKind : uint16_t {<br>
 #define SYMBOL_RECORD(lf_ename, value, name) name = value,<br>
-#include "CVSymbolTypes.def"<br>
+#include "CodeViewSymbols.def"<br>
 };<br>
<br>
 /// Duplicate copy of the above enum, but using the official CV names. Useful<br>
 /// for reference purposes and when dealing with unknown record types.<br>
 enum SymbolKind : uint16_t {<br>
 #define CV_SYMBOL(name, val) name = val,<br>
-#include "CVSymbolTypes.def"<br>
+#include "CodeViewSymbols.def"<br>
 };<br>
<br>
 #define CV_DEFINE_ENUM_CLASS_FLAGS_<wbr>OPERATORS(Class)                            \<br>
@@ -280,7 +284,7 @@ CV_DEFINE_ENUM_CLASS_FLAGS_<wbr>OPERATORS(Met<br>
 /// Equivalent to CV_LABEL_TYPE_e.<br>
 enum class LabelType : uint16_t {<br>
   Near = 0x0,<br>
-  Far  = 0x4,<br>
+  Far = 0x4,<br>
 };<br>
<br>
 /// Equivalent to CV_modifier_t.<br>
<br>
Added: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def?rev=<wbr>304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def (added)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewSymbols.def Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,258 @@<br>
+//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+#ifndef CV_SYMBOL<br>
+#define CV_SYMBOL(ename, value)<br>
+#endif<br>
+<br>
+#ifndef SYMBOL_RECORD<br>
+#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)<br>
+#endif<br>
+<br>
+#ifndef SYMBOL_RECORD_ALIAS<br>
+#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name)                   \<br>
+  SYMBOL_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+// 16 bit symbol types. Not very useful, provided only for reference.<br>
+CV_SYMBOL(S_COMPILE       , 0x0001)<br>
+CV_SYMBOL(S_REGISTER_16t  , 0x0002)<br>
+CV_SYMBOL(S_CONSTANT_16t  , 0x0003)<br>
+CV_SYMBOL(S_UDT_16t       , 0x0004)<br>
+CV_SYMBOL(S_SSEARCH       , 0x0005)<br>
+CV_SYMBOL(S_SKIP          , 0x0007)<br>
+CV_SYMBOL(S_CVRESERVE     , 0x0008)<br>
+CV_SYMBOL(S_OBJNAME_ST    , 0x0009)<br>
+CV_SYMBOL(S_ENDARG        , 0x000a)<br>
+CV_SYMBOL(S_COBOLUDT_16t  , 0x000b)<br>
+CV_SYMBOL(S_MANYREG_16t   , 0x000c)<br>
+CV_SYMBOL(S_RETURN        , 0x000d)<br>
+CV_SYMBOL(S_ENTRYTHIS     , 0x000e)<br>
+CV_SYMBOL(S_BPREL16       , 0x0100)<br>
+CV_SYMBOL(S_LDATA16       , 0x0101)<br>
+CV_SYMBOL(S_GDATA16       , 0x0102)<br>
+CV_SYMBOL(S_PUB16         , 0x0103)<br>
+CV_SYMBOL(S_LPROC16       , 0x0104)<br>
+CV_SYMBOL(S_GPROC16       , 0x0105)<br>
+CV_SYMBOL(S_THUNK16       , 0x0106)<br>
+CV_SYMBOL(S_BLOCK16       , 0x0107)<br>
+CV_SYMBOL(S_WITH16        , 0x0108)<br>
+CV_SYMBOL(S_LABEL16       , 0x0109)<br>
+CV_SYMBOL(S_CEXMODEL16    , 0x010a)<br>
+CV_SYMBOL(S_VFTABLE16     , 0x010b)<br>
+CV_SYMBOL(S_REGREL16      , 0x010c)<br>
+CV_SYMBOL(S_BPREL32_16t   , 0x0200)<br>
+CV_SYMBOL(S_LDATA32_16t   , 0x0201)<br>
+CV_SYMBOL(S_GDATA32_16t   , 0x0202)<br>
+CV_SYMBOL(S_PUB32_16t     , 0x0203)<br>
+CV_SYMBOL(S_LPROC32_16t   , 0x0204)<br>
+CV_SYMBOL(S_GPROC32_16t   , 0x0205)<br>
+CV_SYMBOL(S_THUNK32_ST    , 0x0206)<br>
+CV_SYMBOL(S_BLOCK32_ST    , 0x0207)<br>
+CV_SYMBOL(S_WITH32_ST     , 0x0208)<br>
+CV_SYMBOL(S_LABEL32_ST    , 0x0209)<br>
+CV_SYMBOL(S_CEXMODEL32    , 0x020a)<br>
+CV_SYMBOL(S_VFTABLE32_16t , 0x020b)<br>
+CV_SYMBOL(S_REGREL32_16t  , 0x020c)<br>
+CV_SYMBOL(S_LTHREAD32_16t , 0x020d)<br>
+CV_SYMBOL(S_GTHREAD32_16t , 0x020e)<br>
+CV_SYMBOL(S_SLINK32       , 0x020f)<br>
+CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)<br>
+CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)<br>
+CV_SYMBOL(S_PROCREF_ST    , 0x0400)<br>
+CV_SYMBOL(S_DATAREF_ST    , 0x0401)<br>
+CV_SYMBOL(S_ALIGN         , 0x0402)<br>
+CV_SYMBOL(S_LPROCREF_ST   , 0x0403)<br>
+CV_SYMBOL(S_OEM           , 0x0404)<br>
+<br>
+// All post 16 bit symbol types have the 0x1000 bit set.<br>
+CV_SYMBOL(S_TI16_MAX      , 0x1000)<br>
+<br>
+// Mostly unused "start" symbol types.<br>
+CV_SYMBOL(S_REGISTER_ST   , 0x1001)<br>
+CV_SYMBOL(S_CONSTANT_ST   , 0x1002)<br>
+CV_SYMBOL(S_UDT_ST        , 0x1003)<br>
+CV_SYMBOL(S_COBOLUDT_ST   , 0x1004)<br>
+CV_SYMBOL(S_MANYREG_ST    , 0x1005)<br>
+CV_SYMBOL(S_BPREL32_ST    , 0x1006)<br>
+CV_SYMBOL(S_LDATA32_ST    , 0x1007)<br>
+CV_SYMBOL(S_GDATA32_ST    , 0x1008)<br>
+CV_SYMBOL(S_PUB32_ST      , 0x1009)<br>
+CV_SYMBOL(S_LPROC32_ST    , 0x100a)<br>
+CV_SYMBOL(S_GPROC32_ST    , 0x100b)<br>
+CV_SYMBOL(S_VFTABLE32     , 0x100c)<br>
+CV_SYMBOL(S_REGREL32_ST   , 0x100d)<br>
+CV_SYMBOL(S_LTHREAD32_ST  , 0x100e)<br>
+CV_SYMBOL(S_GTHREAD32_ST  , 0x100f)<br>
+CV_SYMBOL(S_LPROCMIPS_ST  , 0x1010)<br>
+CV_SYMBOL(S_GPROCMIPS_ST  , 0x1011)<br>
+<br>
+CV_SYMBOL(S_COMPILE2_ST   , 0x1013)<br>
+CV_SYMBOL(S_MANYREG2_ST   , 0x1014)<br>
+CV_SYMBOL(S_LPROCIA64_ST  , 0x1015)<br>
+CV_SYMBOL(S_GPROCIA64_ST  , 0x1016)<br>
+CV_SYMBOL(S_LOCALSLOT_ST  , 0x1017)<br>
+CV_SYMBOL(S_PARAMSLOT_ST  , 0x1018)<br>
+CV_SYMBOL(S_ANNOTATION    , 0x1019)<br>
+CV_SYMBOL(S_GMANPROC_ST   , 0x101a)<br>
+CV_SYMBOL(S_LMANPROC_ST   , 0x101b)<br>
+CV_SYMBOL(S_RESERVED1     , 0x101c)<br>
+CV_SYMBOL(S_RESERVED2     , 0x101d)<br>
+CV_SYMBOL(S_RESERVED3     , 0x101e)<br>
+CV_SYMBOL(S_RESERVED4     , 0x101f)<br>
+CV_SYMBOL(S_LMANDATA_ST   , 0x1020)<br>
+CV_SYMBOL(S_GMANDATA_ST   , 0x1021)<br>
+CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)<br>
+CV_SYMBOL(S_MANREGISTER_ST, 0x1023)<br>
+CV_SYMBOL(S_MANSLOT_ST    , 0x1024)<br>
+CV_SYMBOL(S_MANMANYREG_ST , 0x1025)<br>
+CV_SYMBOL(S_MANREGREL_ST  , 0x1026)<br>
+CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)<br>
+CV_SYMBOL(S_MANTYPREF     , 0x1028)<br>
+CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)<br>
+<br>
+// End of S_*_ST symbols, which do not appear to be generated by modern<br>
+// compilers.<br>
+CV_SYMBOL(S_ST_MAX        , 0x1100)<br>
+<br>
+<br>
+CV_SYMBOL(S_WITH32        , 0x1104)<br>
+CV_SYMBOL(S_MANYREG       , 0x110a)<br>
+CV_SYMBOL(S_LPROCMIPS     , 0x1114)<br>
+CV_SYMBOL(S_GPROCMIPS     , 0x1115)<br>
+CV_SYMBOL(S_MANYREG2      , 0x1117)<br>
+CV_SYMBOL(S_LPROCIA64     , 0x1118)<br>
+CV_SYMBOL(S_GPROCIA64     , 0x1119)<br>
+CV_SYMBOL(S_LOCALSLOT     , 0x111a)<br>
+CV_SYMBOL(S_PARAMSLOT     , 0x111b)<br>
+<br>
+// Managed code symbols.<br>
+CV_SYMBOL(S_MANFRAMEREL   , 0x111e)<br>
+CV_SYMBOL(S_MANREGISTER   , 0x111f)<br>
+CV_SYMBOL(S_MANSLOT       , 0x1120)<br>
+CV_SYMBOL(S_MANMANYREG    , 0x1121)<br>
+CV_SYMBOL(S_MANREGREL     , 0x1122)<br>
+CV_SYMBOL(S_MANMANYREG2   , 0x1123)<br>
+CV_SYMBOL(S_UNAMESPACE    , 0x1124)<br>
+CV_SYMBOL(S_DATAREF       , 0x1126)<br>
+CV_SYMBOL(S_ANNOTATIONREF , 0x1128)<br>
+CV_SYMBOL(S_TOKENREF      , 0x1129)<br>
+CV_SYMBOL(S_GMANPROC      , 0x112a)<br>
+CV_SYMBOL(S_LMANPROC      , 0x112b)<br>
+CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)<br>
+CV_SYMBOL(S_ATTR_REGISTER , 0x112f)<br>
+CV_SYMBOL(S_ATTR_REGREL   , 0x1130)<br>
+CV_SYMBOL(S_ATTR_MANYREG  , 0x1131)<br>
+<br>
+<br>
+CV_SYMBOL(S_SEPCODE       , 0x1132)<br>
+CV_SYMBOL(S_LOCAL_2005    , 0x1133)<br>
+CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)<br>
+CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)<br>
+CV_SYMBOL(S_DISCARDED     , 0x113b)<br>
+<br>
+// Current symbol types for most procedures as of this writing.<br>
+CV_SYMBOL(S_LPROCMIPS_ID   , 0x1148)<br>
+CV_SYMBOL(S_GPROCMIPS_ID   , 0x1149)<br>
+CV_SYMBOL(S_LPROCIA64_ID   , 0x114a)<br>
+CV_SYMBOL(S_GPROCIA64_ID   , 0x114b)<br>
+<br>
+CV_SYMBOL(S_DEFRANGE_HLSL  , 0x1150)<br>
+CV_SYMBOL(S_GDATA_HLSL     , 0x1151)<br>
+CV_SYMBOL(S_LDATA_HLSL     , 0x1152)<br>
+CV_SYMBOL(S_LOCAL_DPC_<wbr>GROUPSHARED, 0x1154)<br>
+CV_SYMBOL(S_DEFRANGE_DPC_PTR_<wbr>TAG, 0x1157)<br>
+CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)<br>
+CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)<br>
+CV_SYMBOL(S_POGODATA       , 0x115c)<br>
+CV_SYMBOL(S_INLINESITE2    , 0x115d)<br>
+CV_SYMBOL(S_MOD_TYPEREF    , 0x115f)<br>
+CV_SYMBOL(S_REF_MINIPDB    , 0x1160)<br>
+CV_SYMBOL(S_PDBMAP         , 0x1161)<br>
+CV_SYMBOL(S_GDATA_HLSL32   , 0x1162)<br>
+CV_SYMBOL(S_LDATA_HLSL32   , 0x1163)<br>
+CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)<br>
+CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)<br>
+<br>
+// Known symbol types<br>
+SYMBOL_RECORD(S_END                  , 0x0006, ScopeEndSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>INLINESITE_END , 0x114e, InlineSiteEnd, ScopeEndSym)<br>
+SYMBOL_RECORD_ALIAS(S_PROC_<wbr>ID_END    , 0x114f, ProcEnd, ScopeEndSym)<br>
+<br>
+SYMBOL_RECORD(S_THUNK32       , 0x1102, Thunk32Sym)<br>
+SYMBOL_RECORD(S_TRAMPOLINE    , 0x112c, TrampolineSym)<br>
+SYMBOL_RECORD(S_SECTION       , 0x1136, SectionSym)<br>
+SYMBOL_RECORD(S_COFFGROUP     , 0x1137, CoffGroupSym)<br>
+SYMBOL_RECORD(S_EXPORT        , 0x1138, ExportSym)<br>
+<br>
+SYMBOL_RECORD(S_LPROC32       , 0x110f, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_GPROC32       , 0x1110, GlobalProcSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_ID     , 0x1146, ProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>GPROC32_ID     , 0x1147, GlobalProcIdSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC    , 0x1155, DPCProcSym, ProcSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)<br>
+<br>
+SYMBOL_RECORD(S_REGISTER      , 0x1106, RegisterSym)<br>
+SYMBOL_RECORD(S_PUB32         , 0x110e, PublicSym32)<br>
+<br>
+SYMBOL_RECORD(S_PROCREF       , 0x1125, ProcRefSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LPROCREF, 0x1127, LocalProcRef, ProcRefSym)<br>
+<br>
+<br>
+SYMBOL_RECORD(S_ENVBLOCK      , 0x113d, EnvBlockSym)<br>
+<br>
+SYMBOL_RECORD(S_INLINESITE     , 0x114d, InlineSiteSym)<br>
+SYMBOL_RECORD(S_LOCAL         , 0x113e, LocalSym)<br>
+SYMBOL_RECORD(S_DEFRANGE      , 0x113f, DefRangeSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD, 0x1140, DefRangeSubfieldSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER, 0x1141, DefRangeRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL, 0x1142, DefRangeFramePointerRelSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>SUBFIELD_REGISTER, 0x1143, DefRangeSubfieldRegisterSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>FRAMEPOINTER_REL_FULL_SCOPE, 0x1144, DefRangeFramePointerRelFullSco<wbr>peSym)<br>
+SYMBOL_RECORD(S_DEFRANGE_<wbr>REGISTER_REL, 0x1145, DefRangeRegisterRelSym)<br>
+SYMBOL_RECORD(S_BLOCK32       , 0x1103, BlockSym)<br>
+SYMBOL_RECORD(S_LABEL32       , 0x1105, LabelSym)<br>
+SYMBOL_RECORD(S_OBJNAME       , 0x1101, ObjNameSym)<br>
+SYMBOL_RECORD(S_COMPILE2      , 0x1116, Compile2Sym)<br>
+SYMBOL_RECORD(S_COMPILE3      , 0x113c, Compile3Sym)<br>
+SYMBOL_RECORD(S_FRAMEPROC     , 0x1012, FrameProcSym)<br>
+SYMBOL_RECORD(S_CALLSITEINFO  , 0x1139, CallSiteInfoSym)<br>
+SYMBOL_RECORD(S_FILESTATIC     , 0x1153, FileStaticSym)<br>
+SYMBOL_RECORD(S_HEAPALLOCSITE  , 0x115e, HeapAllocationSiteSym)<br>
+SYMBOL_RECORD(S_FRAMECOOKIE   , 0x113a, FrameCookieSym)<br>
+<br>
+SYMBOL_RECORD(S_CALLEES        , 0x115a, CallerSym)<br>
+SYMBOL_RECORD_ALIAS(S_CALLERS        , 0x115b, CalleeSym, CallerSym)<br>
+<br>
+SYMBOL_RECORD(S_UDT           , 0x1108, UDTSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>COBOLUDT      , 0x1109, CobolUDT, UDTSym)<br>
+<br>
+SYMBOL_RECORD(S_BUILDINFO      , 0x114c, BuildInfoSym)<br>
+SYMBOL_RECORD(S_BPREL32       , 0x110b, BPRelativeSym)<br>
+SYMBOL_RECORD(S_REGREL32      , 0x1111, RegRelativeSym)<br>
+<br>
+SYMBOL_RECORD(S_CONSTANT      , 0x1107, ConstantSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>MANCONSTANT   , 0x112d, ManagedConstant, ConstantSym)<br>
+<br>
+SYMBOL_RECORD(S_LDATA32       , 0x110c, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_GDATA32       , 0x110d, GlobalData, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>LMANDATA      , 0x111c, ManagedLocalData, DataSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>GMANDATA      , 0x111d, ManagedGlobalData, DataSym)<br>
+<br>
+SYMBOL_RECORD(S_LTHREAD32     , 0x1112, ThreadLocalDataSym)<br>
+SYMBOL_RECORD_ALIAS(S_<wbr>GTHREAD32     , 0x1113, GlobalTLS, ThreadLocalDataSym)<br>
+<br>
+<br>
+#undef CV_SYMBOL<br>
+#undef SYMBOL_RECORD<br>
+#undef SYMBOL_RECORD_ALIAS<br>
<br>
Added: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def?rev=304248&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def (added)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>CodeViewTypes.def Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,251 @@<br>
+<br>
+//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+// If the type is known, then we have a record describing it in TypeRecord.h.<br>
+<br>
+#ifndef CV_TYPE<br>
+#define CV_TYPE(lf_ename, value)<br>
+#endif<br>
+<br>
+// If the type is known, then we have a record describing it in TypeRecord.h.<br>
+#ifndef TYPE_RECORD<br>
+#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)<br>
+#endif<br>
+<br>
+#ifndef TYPE_RECORD_ALIAS<br>
+#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name)                   \<br>
+  TYPE_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+#ifndef MEMBER_RECORD<br>
+#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+#ifndef MEMBER_RECORD_ALIAS<br>
+#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name)                 \<br>
+  MEMBER_RECORD(lf_ename, value, name)<br>
+#endif<br>
+<br>
+TYPE_RECORD(LF_POINTER, 0x1002, Pointer)<br>
+TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)<br>
+TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)<br>
+TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)<br>
+TYPE_RECORD(LF_LABEL, 0x000e, Label)<br>
+TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)<br>
+<br>
+TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)<br>
+<br>
+TYPE_RECORD(LF_ARRAY, 0x1503, Array)<br>
+TYPE_RECORD(LF_CLASS, 0x1504, Class)<br>
+TYPE_RECORD_ALIAS(LF_<wbr>STRUCTURE, 0x1505, Struct, Class)<br>
+TYPE_RECORD_ALIAS(LF_<wbr>INTERFACE, 0x1519, Interface, Class)<br>
+TYPE_RECORD(LF_UNION, 0x1506, Union)<br>
+TYPE_RECORD(LF_ENUM, 0x1507, Enum)<br>
+TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)<br>
+TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)<br>
+TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)<br>
+<br>
+TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)<br>
+<br>
+// Member type records. These are generally not length prefixed, and appear<br>
+// inside of a field list record.<br>
+MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)<br>
+MEMBER_RECORD_ALIAS(LF_<wbr>BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
+<br>
+MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
+MEMBER_RECORD_ALIAS(LF_<wbr>IVBCLASS, 0x1402, IndirectVirtualBaseClass,<br>
+                    VirtualBaseClass)<br>
+<br>
+MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)<br>
+MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)<br>
+MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)<br>
+MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)<br>
+MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)<br>
+MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)<br>
+MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)<br>
+MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)<br>
+<br>
+// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
+TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)<br>
+TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)<br>
+TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)<br>
+TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)<br>
+TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)<br>
+TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)<br>
+TYPE_RECORD(LF_UDT_MOD_SRC_<wbr>LINE, 0x1607, UdtModSourceLine)<br>
+<br>
+<br>
+TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)<br>
+<br>
+<br>
+// 16 bit type records.<br>
+CV_TYPE(LF_MODIFIER_16t, 0x0001)<br>
+CV_TYPE(LF_POINTER_16t, 0x0002)<br>
+CV_TYPE(LF_ARRAY_16t, 0x0003)<br>
+CV_TYPE(LF_CLASS_16t, 0x0004)<br>
+CV_TYPE(LF_STRUCTURE_16t, 0x0005)<br>
+CV_TYPE(LF_UNION_16t, 0x0006)<br>
+CV_TYPE(LF_ENUM_16t, 0x0007)<br>
+CV_TYPE(LF_PROCEDURE_16t, 0x0008)<br>
+CV_TYPE(LF_MFUNCTION_16t, 0x0009)<br>
+CV_TYPE(LF_COBOL0_16t, 0x000b)<br>
+CV_TYPE(LF_COBOL1, 0x000c)<br>
+CV_TYPE(LF_BARRAY_16t, 0x000d)<br>
+CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL<br>
+CV_TYPE(LF_NOTTRAN, 0x0010)<br>
+CV_TYPE(LF_DIMARRAY_16t, 0x0011)<br>
+CV_TYPE(LF_VFTPATH_16t, 0x0012)<br>
+CV_TYPE(LF_PRECOMP_16t, 0x0013)<br>
+CV_TYPE(LF_ENDPRECOMP, 0x0014)<br>
+CV_TYPE(LF_OEM_16t, 0x0015)<br>
+CV_TYPE(LF_TYPESERVER_ST, 0x0016)<br>
+<br>
+CV_TYPE(LF_SKIP_16t, 0x0200)<br>
+CV_TYPE(LF_ARGLIST_16t, 0x0201)<br>
+CV_TYPE(LF_DEFARG_16t, 0x0202)<br>
+CV_TYPE(LF_LIST, 0x0203)<br>
+CV_TYPE(LF_FIELDLIST_16t, 0x0204)<br>
+CV_TYPE(LF_DERIVED_16t, 0x0205)<br>
+CV_TYPE(LF_BITFIELD_16t, 0x0206)<br>
+CV_TYPE(LF_METHODLIST_16t, 0x0207)<br>
+CV_TYPE(LF_DIMCONU_16t, 0x0208)<br>
+CV_TYPE(LF_DIMCONLU_16t, 0x0209)<br>
+CV_TYPE(LF_DIMVARU_16t, 0x020a)<br>
+CV_TYPE(LF_DIMVARLU_16t, 0x020b)<br>
+CV_TYPE(LF_REFSYM, 0x020c)<br>
+<br>
+// 16 bit member types. Generally not length prefixed.<br>
+CV_TYPE(LF_BCLASS_16t, 0x0400)<br>
+CV_TYPE(LF_VBCLASS_16t, 0x0401)<br>
+CV_TYPE(LF_IVBCLASS_16t, 0x0402)<br>
+CV_TYPE(LF_ENUMERATE_ST, 0x0403)<br>
+CV_TYPE(LF_FRIENDFCN_16t, 0x0404)<br>
+CV_TYPE(LF_INDEX_16t, 0x0405)<br>
+CV_TYPE(LF_MEMBER_16t, 0x0406)<br>
+CV_TYPE(LF_STMEMBER_16t, 0x0407)<br>
+CV_TYPE(LF_METHOD_16t, 0x0408)<br>
+CV_TYPE(LF_NESTTYPE_16t, 0x0409)<br>
+CV_TYPE(LF_VFUNCTAB_16t, 0x040a)<br>
+CV_TYPE(LF_FRIENDCLS_16t, 0x040b)<br>
+CV_TYPE(LF_ONEMETHOD_16t, 0x040c)<br>
+CV_TYPE(LF_VFUNCOFF_16t, 0x040d)<br>
+<br>
+CV_TYPE(LF_TI16_MAX, 0x1000)<br>
+<br>
+CV_TYPE(LF_ARRAY_ST, 0x1003)<br>
+CV_TYPE(LF_CLASS_ST, 0x1004)<br>
+CV_TYPE(LF_STRUCTURE_ST, 0x1005)<br>
+CV_TYPE(LF_UNION_ST, 0x1006)<br>
+CV_TYPE(LF_ENUM_ST, 0x1007)<br>
+CV_TYPE(LF_COBOL0, 0x100a)<br>
+CV_TYPE(LF_BARRAY, 0x100b)<br>
+CV_TYPE(LF_DIMARRAY_ST, 0x100c)<br>
+CV_TYPE(LF_VFTPATH, 0x100d)<br>
+CV_TYPE(LF_PRECOMP_ST, 0x100e)<br>
+CV_TYPE(LF_OEM, 0x100f)<br>
+CV_TYPE(LF_ALIAS_ST, 0x1010)<br>
+CV_TYPE(LF_OEM2, 0x1011)<br>
+<br>
+CV_TYPE(LF_SKIP, 0x1200)<br>
+CV_TYPE(LF_DEFARG_ST, 0x1202)<br>
+CV_TYPE(LF_DERIVED, 0x1204)<br>
+CV_TYPE(LF_DIMCONU, 0x1207)<br>
+CV_TYPE(LF_DIMCONLU, 0x1208)<br>
+CV_TYPE(LF_DIMVARU, 0x1209)<br>
+CV_TYPE(LF_DIMVARLU, 0x120a)<br>
+<br>
+// Member type records. These are generally not length prefixed, and appear<br>
+// inside of a field list record.<br>
+CV_TYPE(LF_FRIENDFCN_ST, 0x1403)<br>
+CV_TYPE(LF_MEMBER_ST, 0x1405)<br>
+CV_TYPE(LF_STMEMBER_ST, 0x1406)<br>
+CV_TYPE(LF_METHOD_ST, 0x1407)<br>
+CV_TYPE(LF_NESTTYPE_ST, 0x1408)<br>
+CV_TYPE(LF_FRIENDCLS, 0x140a)<br>
+CV_TYPE(LF_ONEMETHOD_ST, 0x140b)<br>
+CV_TYPE(LF_VFUNCOFF, 0x140c)<br>
+CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)<br>
+CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)<br>
+CV_TYPE(LF_MANAGED_ST, 0x140f)<br>
+<br>
+CV_TYPE(LF_ST_MAX, 0x1500)<br>
+CV_TYPE(LF_TYPESERVER, 0x1501)<br>
+CV_TYPE(LF_DIMARRAY, 0x1508)<br>
+CV_TYPE(LF_PRECOMP, 0x1509)<br>
+CV_TYPE(LF_ALIAS, 0x150a)<br>
+CV_TYPE(LF_DEFARG, 0x150b)<br>
+CV_TYPE(LF_FRIENDFCN, 0x150c)<br>
+CV_TYPE(LF_NESTTYPEEX, 0x1512)<br>
+CV_TYPE(LF_MEMBERMODIFY, 0x1513)<br>
+CV_TYPE(LF_MANAGED, 0x1514)<br>
+CV_TYPE(LF_STRIDED_ARRAY, 0x1516)<br>
+CV_TYPE(LF_HLSL, 0x1517)<br>
+CV_TYPE(LF_MODIFIER_EX, 0x1518)<br>
+CV_TYPE(LF_VECTOR, 0x151b)<br>
+CV_TYPE(LF_MATRIX, 0x151c)<br>
+<br>
+// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
+<br>
+// Numeric leaf types. These are generally contained in other records, and not<br>
+// encountered in the main type stream.<br>
+<br>
+CV_TYPE(LF_NUMERIC, 0x8000)<br>
+CV_TYPE(LF_CHAR, 0x8000)<br>
+CV_TYPE(LF_SHORT, 0x8001)<br>
+CV_TYPE(LF_USHORT, 0x8002)<br>
+CV_TYPE(LF_LONG, 0x8003)<br>
+CV_TYPE(LF_ULONG, 0x8004)<br>
+CV_TYPE(LF_REAL32, 0x8005)<br>
+CV_TYPE(LF_REAL64, 0x8006)<br>
+CV_TYPE(LF_REAL80, 0x8007)<br>
+CV_TYPE(LF_REAL128, 0x8008)<br>
+CV_TYPE(LF_QUADWORD, 0x8009)<br>
+CV_TYPE(LF_UQUADWORD, 0x800a)<br>
+CV_TYPE(LF_REAL48, 0x800b)<br>
+CV_TYPE(LF_COMPLEX32, 0x800c)<br>
+CV_TYPE(LF_COMPLEX64, 0x800d)<br>
+CV_TYPE(LF_COMPLEX80, 0x800e)<br>
+CV_TYPE(LF_COMPLEX128, 0x800f)<br>
+CV_TYPE(LF_VARSTRING, 0x8010)<br>
+CV_TYPE(LF_OCTWORD, 0x8017)<br>
+CV_TYPE(LF_UOCTWORD, 0x8018)<br>
+CV_TYPE(LF_DECIMAL, 0x8019)<br>
+CV_TYPE(LF_DATE, 0x801a)<br>
+CV_TYPE(LF_UTF8STRING, 0x801b)<br>
+CV_TYPE(LF_REAL16, 0x801c)<br>
+<br>
+// Padding bytes. These are emitted into alignment bytes in the type stream.<br>
+<br>
+CV_TYPE(LF_PAD0, 0xf0)<br>
+CV_TYPE(LF_PAD1, 0xf1)<br>
+CV_TYPE(LF_PAD2, 0xf2)<br>
+CV_TYPE(LF_PAD3, 0xf3)<br>
+CV_TYPE(LF_PAD4, 0xf4)<br>
+CV_TYPE(LF_PAD5, 0xf5)<br>
+CV_TYPE(LF_PAD6, 0xf6)<br>
+CV_TYPE(LF_PAD7, 0xf7)<br>
+CV_TYPE(LF_PAD8, 0xf8)<br>
+CV_TYPE(LF_PAD9, 0xf9)<br>
+CV_TYPE(LF_PAD10, 0xfa)<br>
+CV_TYPE(LF_PAD11, 0xfb)<br>
+CV_TYPE(LF_PAD12, 0xfc)<br>
+CV_TYPE(LF_PAD13, 0xfd)<br>
+CV_TYPE(LF_PAD14, 0xfe)<br>
+CV_TYPE(LF_PAD15, 0xff)<br>
+<br>
+#undef CV_TYPE<br>
+#undef TYPE_RECORD<br>
+#undef TYPE_RECORD_ALIAS<br>
+#undef MEMBER_RECORD<br>
+#undef MEMBER_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolDeserializer.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolDeserializer.h Tue May 30 16:53:05 2017<br>
@@ -54,7 +54,7 @@ public:<br>
     return visitKnownRecordImpl(CVR, Record);                                  \<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
 private:<br>
   template <typename T> Error visitKnownRecordImpl(CVSymbol &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolRecordMapping.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolRecordMapping.h Tue May 30 16:53:05 2017<br>
@@ -29,7 +29,7 @@ public:<br>
 #define SYMBOL_RECORD(EnumName, EnumVal, Name)                                 \<br>
   Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
 private:<br>
   Optional<SymbolKind> Kind;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolSerializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolSerializer.h Tue May 30 16:53:05 2017<br>
@@ -55,7 +55,7 @@ public:<br>
     return visitKnownRecordImpl(CVR, Record);                                  \<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
 private:<br>
   template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h?rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbackPipeline.<wbr>h Tue May 30 16:53:05 2017<br>
@@ -59,7 +59,7 @@ public:<br>
     return Error::success();                                                   \<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
 private:<br>
   std::vector<<wbr>SymbolVisitorCallbacks *> Pipeline;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>SymbolVisitorCallbacks.h Tue May 30 16:53:05 2017<br>
@@ -39,7 +39,7 @@ public:<br>
     return Error::success();                                                   \<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
 };<br>
<br>
 } // end namespace codeview<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDatabaseVisitor.h Tue May 30 16:53:05 2017<br>
@@ -39,7 +39,7 @@ public:<br>
   Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override;<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   StringRef getTypeName(TypeIndex Index) const;<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDeserializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDeserializer.h Tue May 30 16:53:05 2017<br>
@@ -41,6 +41,7 @@ public:<br>
   TypeDeserializer() = default;<br>
<br>
   template <typename T> static Error deserializeAs(CVType &CVT, T &Record) {<br>
+    Record.Kind = static_cast<TypeRecordKind>(<wbr>CVT.kind());<br>
     MappingInfo I(CVT.content());<br>
     if (auto EC = I.Mapping.visitTypeBegin(CVT))<br>
       return EC;<br>
@@ -75,7 +76,7 @@ public:<br>
 #define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   template <typename RecordType><br>
@@ -127,7 +128,7 @@ public:<br>
   }<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   template <typename RecordType><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeDumpVisitor.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.h Tue May 30 16:53:05 2017<br>
@@ -58,7 +58,7 @@ public:<br>
   Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override;<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   void printMemberAttributes(<wbr>MemberAttributes Attrs);<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecord.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/TypeRecord.<wbr>h Tue May 30 16:53:05 2017<br>
@@ -123,13 +123,13 @@ protected:<br>
 public:<br>
   TypeRecordKind getKind() const { return Kind; }<br>
<br>
-private:<br>
   TypeRecordKind Kind;<br>
 };<br>
<br>
 // LF_MODIFIER<br>
 class ModifierRecord : public TypeRecord {<br>
 public:<br>
+  ModifierRecord() = default;<br>
   explicit ModifierRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)<br>
       : TypeRecord(TypeRecordKind::<wbr>Modifier), ModifiedType(ModifiedType),<br>
@@ -145,6 +145,7 @@ public:<br>
 // LF_PROCEDURE<br>
 class ProcedureRecord : public TypeRecord {<br>
 public:<br>
+  ProcedureRecord() = default;<br>
   explicit ProcedureRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv,<br>
                   FunctionOptions Options, uint16_t ParameterCount,<br>
@@ -169,6 +170,7 @@ public:<br>
 // LF_MFUNCTION<br>
 class MemberFunctionRecord : public TypeRecord {<br>
 public:<br>
+  MemberFunctionRecord() = default;<br>
   explicit MemberFunctionRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
   MemberFunctionRecord(TypeIndex ReturnType, TypeIndex ClassType,<br>
@@ -203,6 +205,7 @@ public:<br>
 // LF_LABEL<br>
 class LabelRecord : public TypeRecord {<br>
 public:<br>
+  LabelRecord() = default;<br>
   explicit LabelRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
   LabelRecord(LabelType Mode) : TypeRecord(TypeRecordKind::<wbr>Label), Mode(Mode) {}<br>
@@ -213,6 +216,7 @@ public:<br>
 // LF_MFUNC_ID<br>
 class MemberFuncIdRecord : public TypeRecord {<br>
 public:<br>
+  MemberFuncIdRecord() = default;<br>
   explicit MemberFuncIdRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType,<br>
                          StringRef Name)<br>
@@ -230,6 +234,7 @@ public:<br>
 // LF_ARGLIST<br>
 class ArgListRecord : public TypeRecord {<br>
 public:<br>
+  ArgListRecord() = default;<br>
   explicit ArgListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
   ArgListRecord(TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)<br>
@@ -243,6 +248,7 @@ public:<br>
 // LF_SUBSTR_LIST<br>
 class StringListRecord : public TypeRecord {<br>
 public:<br>
+  StringListRecord() = default;<br>
   explicit StringListRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
   StringListRecord(<wbr>TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)<br>
@@ -267,6 +273,7 @@ public:<br>
   static const uint32_t PointerSizeShift = 13;<br>
   static const uint32_t PointerSizeMask = 0xFF;<br>
<br>
+  PointerRecord() = default;<br>
   explicit PointerRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
<br>
   PointerRecord(TypeIndex ReferentType, uint32_t Attrs)<br>
@@ -341,6 +348,7 @@ private:<br>
 // LF_NESTTYPE<br>
 class NestedTypeRecord : public TypeRecord {<br>
 public:<br>
+  NestedTypeRecord() = default;<br>
   explicit NestedTypeRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   NestedTypeRecord(TypeIndex Type, StringRef Name)<br>
       : TypeRecord(TypeRecordKind::<wbr>NestedType), Type(Type), Name(Name) {}<br>
@@ -355,6 +363,7 @@ public:<br>
 // LF_FIELDLIST<br>
 class FieldListRecord : public TypeRecord {<br>
 public:<br>
+  FieldListRecord() = default;<br>
   explicit FieldListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   explicit FieldListRecord(ArrayRef<<wbr>uint8_t> Data)<br>
       : TypeRecord(TypeRecordKind::<wbr>FieldList), Data(Data) {}<br>
@@ -365,6 +374,7 @@ public:<br>
 // LF_ARRAY<br>
 class ArrayRecord : public TypeRecord {<br>
 public:<br>
+  ArrayRecord() = default;<br>
   explicit ArrayRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t Size,<br>
               StringRef Name)<br>
@@ -384,6 +394,7 @@ public:<br>
<br>
 class TagRecord : public TypeRecord {<br>
 protected:<br>
+  TagRecord() = default;<br>
   explicit TagRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options,<br>
             TypeIndex FieldList, StringRef Name, StringRef UniqueName)<br>
@@ -416,6 +427,7 @@ public:<br>
 // LF_CLASS, LF_STRUCTURE, LF_INTERFACE<br>
 class ClassRecord : public TagRecord {<br>
 public:<br>
+  ClassRecord() = default;<br>
   explicit ClassRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
   ClassRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options,<br>
               TypeIndex FieldList, TypeIndex DerivationList,<br>
@@ -447,6 +459,7 @@ public:<br>
<br>
 // LF_UNION<br>
 struct UnionRecord : public TagRecord {<br>
+  UnionRecord() = default;<br>
   explicit UnionRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
   UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList,<br>
               uint64_t Size, StringRef Name, StringRef UniqueName)<br>
@@ -468,6 +481,7 @@ struct UnionRecord : public TagRecord {<br>
 // LF_ENUM<br>
 class EnumRecord : public TagRecord {<br>
 public:<br>
+  EnumRecord() = default;<br>
   explicit EnumRecord(TypeRecordKind Kind) : TagRecord(Kind) {}<br>
   EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList,<br>
              StringRef Name, StringRef UniqueName, TypeIndex UnderlyingType)<br>
@@ -482,6 +496,7 @@ public:<br>
 // LF_BITFIELD<br>
 class BitFieldRecord : public TypeRecord {<br>
 public:<br>
+  BitFieldRecord() = default;<br>
   explicit BitFieldRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)<br>
       : TypeRecord(TypeRecordKind::<wbr>BitField), Type(Type), BitSize(BitSize),<br>
@@ -498,6 +513,7 @@ public:<br>
 // LF_VTSHAPE<br>
 class VFTableShapeRecord : public TypeRecord {<br>
 public:<br>
+  VFTableShapeRecord() = default;<br>
   explicit VFTableShapeRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   explicit VFTableShapeRecord(ArrayRef<<wbr>VFTableSlotKind> Slots)<br>
       : TypeRecord(TypeRecordKind::<wbr>VFTableShape), SlotsRef(Slots) {}<br>
@@ -518,6 +534,7 @@ public:<br>
 // LF_TYPESERVER2<br>
 class TypeServer2Record : public TypeRecord {<br>
 public:<br>
+  TypeServer2Record() = default;<br>
   explicit TypeServer2Record(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)<br>
       : TypeRecord(TypeRecordKind::<wbr>TypeServer2), Guid(Guid), Age(Age),<br>
@@ -537,6 +554,7 @@ public:<br>
 // LF_STRING_ID<br>
 class StringIdRecord : public TypeRecord {<br>
 public:<br>
+  StringIdRecord() = default;<br>
   explicit StringIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   StringIdRecord(TypeIndex Id, StringRef String)<br>
       : TypeRecord(TypeRecordKind::<wbr>StringId), Id(Id), String(String) {}<br>
@@ -551,6 +569,7 @@ public:<br>
 // LF_FUNC_ID<br>
 class FuncIdRecord : public TypeRecord {<br>
 public:<br>
+  FuncIdRecord() = default;<br>
   explicit FuncIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType, StringRef Name)<br>
       : TypeRecord(TypeRecordKind::<wbr>FuncId), ParentScope(ParentScope),<br>
@@ -570,6 +589,7 @@ public:<br>
 // LF_UDT_SRC_LINE<br>
 class UdtSourceLineRecord : public TypeRecord {<br>
 public:<br>
+  UdtSourceLineRecord() = default;<br>
   explicit UdtSourceLineRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)<br>
       : TypeRecord(TypeRecordKind::<wbr>UdtSourceLine), UDT(UDT),<br>
@@ -587,6 +607,7 @@ public:<br>
 // LF_UDT_MOD_SRC_LINE<br>
 class UdtModSourceLineRecord : public TypeRecord {<br>
 public:<br>
+  UdtModSourceLineRecord() = default;<br>
   explicit UdtModSourceLineRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   UdtModSourceLineRecord(<wbr>TypeIndex UDT, TypeIndex SourceFile,<br>
                          uint32_t LineNumber, uint16_t Module)<br>
@@ -607,6 +628,7 @@ public:<br>
 // LF_BUILDINFO<br>
 class BuildInfoRecord : public TypeRecord {<br>
 public:<br>
+  BuildInfoRecord() = default;<br>
   explicit BuildInfoRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   BuildInfoRecord(ArrayRef<<wbr>TypeIndex> ArgIndices)<br>
       : TypeRecord(TypeRecordKind::<wbr>BuildInfo),<br>
@@ -619,6 +641,7 @@ public:<br>
 // LF_VFTABLE<br>
 class VFTableRecord : public TypeRecord {<br>
 public:<br>
+  VFTableRecord() = default;<br>
   explicit VFTableRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable,<br>
                 uint32_t VFPtrOffset, StringRef Name,<br>
@@ -646,7 +669,7 @@ public:<br>
 // LF_ONEMETHOD<br>
 class OneMethodRecord : public TypeRecord {<br>
 public:<br>
-  OneMethodRecord() : TypeRecord(TypeRecordKind::<wbr>OneMethod) {}<br>
+  OneMethodRecord() = default;<br>
   explicit OneMethodRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   OneMethodRecord(TypeIndex Type, MemberAttributes Attrs, int32_t VFTableOffset,<br>
                   StringRef Name)<br>
@@ -678,6 +701,7 @@ public:<br>
 // LF_METHODLIST<br>
 class MethodOverloadListRecord : public TypeRecord {<br>
 public:<br>
+  MethodOverloadListRecord() = default;<br>
   explicit MethodOverloadListRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   MethodOverloadListRecord(<wbr>ArrayRef<OneMethodRecord> Methods)<br>
       : TypeRecord(TypeRecordKind::<wbr>MethodOverloadList), Methods(Methods) {}<br>
@@ -689,6 +713,7 @@ public:<br>
 /// For method overload sets.  LF_METHOD<br>
 class OverloadedMethodRecord : public TypeRecord {<br>
 public:<br>
+  OverloadedMethodRecord() = default;<br>
   explicit OverloadedMethodRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   OverloadedMethodRecord(uint16_<wbr>t NumOverloads, TypeIndex MethodList,<br>
                          StringRef Name)<br>
@@ -706,6 +731,7 @@ public:<br>
 // LF_MEMBER<br>
 class DataMemberRecord : public TypeRecord {<br>
 public:<br>
+  DataMemberRecord() = default;<br>
   explicit DataMemberRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   DataMemberRecord(<wbr>MemberAttributes Attrs, TypeIndex Type, uint64_t Offset,<br>
                    StringRef Name)<br>
@@ -730,6 +756,7 @@ public:<br>
 // LF_STMEMBER<br>
 class StaticDataMemberRecord : public TypeRecord {<br>
 public:<br>
+  StaticDataMemberRecord() = default;<br>
   explicit StaticDataMemberRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   StaticDataMemberRecord(<wbr>MemberAttributes Attrs, TypeIndex Type, StringRef Name)<br>
       : TypeRecord(TypeRecordKind::<wbr>StaticDataMember), Attrs(Attrs), Type(Type),<br>
@@ -750,6 +777,7 @@ public:<br>
 // LF_ENUMERATE<br>
 class EnumeratorRecord : public TypeRecord {<br>
 public:<br>
+  EnumeratorRecord() = default;<br>
   explicit EnumeratorRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   EnumeratorRecord(<wbr>MemberAttributes Attrs, APSInt Value, StringRef Name)<br>
       : TypeRecord(TypeRecordKind::<wbr>Enumerator), Attrs(Attrs),<br>
@@ -770,6 +798,7 @@ public:<br>
 // LF_VFUNCTAB<br>
 class VFPtrRecord : public TypeRecord {<br>
 public:<br>
+  VFPtrRecord() = default;<br>
   explicit VFPtrRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   VFPtrRecord(TypeIndex Type)<br>
       : TypeRecord(TypeRecordKind::<wbr>VFPtr), Type(Type) {}<br>
@@ -782,6 +811,7 @@ public:<br>
 // LF_BCLASS, LF_BINTERFACE<br>
 class BaseClassRecord : public TypeRecord {<br>
 public:<br>
+  BaseClassRecord() = default;<br>
   explicit BaseClassRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   BaseClassRecord(<wbr>MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)<br>
       : TypeRecord(TypeRecordKind::<wbr>BaseClass), Attrs(Attrs), Type(Type),<br>
@@ -802,6 +832,7 @@ public:<br>
 // LF_VBCLASS, LF_IVBCLASS<br>
 class VirtualBaseClassRecord : public TypeRecord {<br>
 public:<br>
+  VirtualBaseClassRecord() = default;<br>
   explicit VirtualBaseClassRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   VirtualBaseClassRecord(<wbr>TypeRecordKind Kind, MemberAttributes Attrs,<br>
                          TypeIndex BaseType, TypeIndex VBPtrType,<br>
@@ -831,6 +862,7 @@ public:<br>
 /// together. The first will end in an LF_INDEX record that points to the next.<br>
 class ListContinuationRecord : public TypeRecord {<br>
 public:<br>
+  ListContinuationRecord() = default;<br>
   explicit ListContinuationRecord(<wbr>TypeRecordKind Kind) : TypeRecord(Kind) {}<br>
   ListContinuationRecord(<wbr>TypeIndex ContinuationIndex)<br>
       : TypeRecord(TypeRecordKind::<wbr>ListContinuation),<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecordMapping.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecordMapping.h Tue May 30 16:53:05 2017<br>
@@ -37,7 +37,7 @@ public:<br>
   Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override;<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   Optional<TypeLeafKind> TypeKind;<br>
<br>
Removed: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeRecords.def?rev=304247&<wbr>view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeRecords.def (removed)<br>
@@ -1,251 +0,0 @@<br>
-<br>
-//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-//<br>
-// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-// If the type is known, then we have a record describing it in TypeRecord.h.<br>
-<br>
-#ifndef CV_TYPE<br>
-#define CV_TYPE(lf_ename, value)<br>
-#endif<br>
-<br>
-// If the type is known, then we have a record describing it in TypeRecord.h.<br>
-#ifndef TYPE_RECORD<br>
-#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)<br>
-#endif<br>
-<br>
-#ifndef TYPE_RECORD_ALIAS<br>
-#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name)                   \<br>
-  TYPE_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-#ifndef MEMBER_RECORD<br>
-#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-#ifndef MEMBER_RECORD_ALIAS<br>
-#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name)                 \<br>
-  MEMBER_RECORD(lf_ename, value, name)<br>
-#endif<br>
-<br>
-TYPE_RECORD(LF_POINTER, 0x1002, Pointer)<br>
-TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)<br>
-TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)<br>
-TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)<br>
-TYPE_RECORD(LF_LABEL, 0x000e, Label)<br>
-TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)<br>
-<br>
-TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)<br>
-<br>
-TYPE_RECORD(LF_ARRAY, 0x1503, Array)<br>
-TYPE_RECORD(LF_CLASS, 0x1504, Class)<br>
-TYPE_RECORD_ALIAS(LF_<wbr>STRUCTURE, 0x1505, Struct, Class)<br>
-TYPE_RECORD_ALIAS(LF_<wbr>INTERFACE, 0x1519, Interface, Class)<br>
-TYPE_RECORD(LF_UNION, 0x1506, Union)<br>
-TYPE_RECORD(LF_ENUM, 0x1507, Enum)<br>
-TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)<br>
-TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)<br>
-TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)<br>
-<br>
-TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)<br>
-<br>
-// Member type records. These are generally not length prefixed, and appear<br>
-// inside of a field list record.<br>
-MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)<br>
-MEMBER_RECORD_ALIAS(LF_<wbr>BINTERFACE, 0x151a, BaseInterface, BaseClass)<br>
-<br>
-MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)<br>
-MEMBER_RECORD_ALIAS(LF_<wbr>IVBCLASS, 0x1402, IndirectVirtualBaseClass,<br>
-                    VirtualBaseClass)<br>
-<br>
-MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)<br>
-MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)<br>
-MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)<br>
-MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)<br>
-MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)<br>
-MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)<br>
-MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)<br>
-MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)<br>
-<br>
-// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
-TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)<br>
-TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)<br>
-TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)<br>
-TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)<br>
-TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)<br>
-TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)<br>
-TYPE_RECORD(LF_UDT_MOD_SRC_<wbr>LINE, 0x1607, UdtModSourceLine)<br>
-<br>
-<br>
-TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)<br>
-<br>
-<br>
-// 16 bit type records.<br>
-CV_TYPE(LF_MODIFIER_16t, 0x0001)<br>
-CV_TYPE(LF_POINTER_16t, 0x0002)<br>
-CV_TYPE(LF_ARRAY_16t, 0x0003)<br>
-CV_TYPE(LF_CLASS_16t, 0x0004)<br>
-CV_TYPE(LF_STRUCTURE_16t, 0x0005)<br>
-CV_TYPE(LF_UNION_16t, 0x0006)<br>
-CV_TYPE(LF_ENUM_16t, 0x0007)<br>
-CV_TYPE(LF_PROCEDURE_16t, 0x0008)<br>
-CV_TYPE(LF_MFUNCTION_16t, 0x0009)<br>
-CV_TYPE(LF_COBOL0_16t, 0x000b)<br>
-CV_TYPE(LF_COBOL1, 0x000c)<br>
-CV_TYPE(LF_BARRAY_16t, 0x000d)<br>
-CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL<br>
-CV_TYPE(LF_NOTTRAN, 0x0010)<br>
-CV_TYPE(LF_DIMARRAY_16t, 0x0011)<br>
-CV_TYPE(LF_VFTPATH_16t, 0x0012)<br>
-CV_TYPE(LF_PRECOMP_16t, 0x0013)<br>
-CV_TYPE(LF_ENDPRECOMP, 0x0014)<br>
-CV_TYPE(LF_OEM_16t, 0x0015)<br>
-CV_TYPE(LF_TYPESERVER_ST, 0x0016)<br>
-<br>
-CV_TYPE(LF_SKIP_16t, 0x0200)<br>
-CV_TYPE(LF_ARGLIST_16t, 0x0201)<br>
-CV_TYPE(LF_DEFARG_16t, 0x0202)<br>
-CV_TYPE(LF_LIST, 0x0203)<br>
-CV_TYPE(LF_FIELDLIST_16t, 0x0204)<br>
-CV_TYPE(LF_DERIVED_16t, 0x0205)<br>
-CV_TYPE(LF_BITFIELD_16t, 0x0206)<br>
-CV_TYPE(LF_METHODLIST_16t, 0x0207)<br>
-CV_TYPE(LF_DIMCONU_16t, 0x0208)<br>
-CV_TYPE(LF_DIMCONLU_16t, 0x0209)<br>
-CV_TYPE(LF_DIMVARU_16t, 0x020a)<br>
-CV_TYPE(LF_DIMVARLU_16t, 0x020b)<br>
-CV_TYPE(LF_REFSYM, 0x020c)<br>
-<br>
-// 16 bit member types. Generally not length prefixed.<br>
-CV_TYPE(LF_BCLASS_16t, 0x0400)<br>
-CV_TYPE(LF_VBCLASS_16t, 0x0401)<br>
-CV_TYPE(LF_IVBCLASS_16t, 0x0402)<br>
-CV_TYPE(LF_ENUMERATE_ST, 0x0403)<br>
-CV_TYPE(LF_FRIENDFCN_16t, 0x0404)<br>
-CV_TYPE(LF_INDEX_16t, 0x0405)<br>
-CV_TYPE(LF_MEMBER_16t, 0x0406)<br>
-CV_TYPE(LF_STMEMBER_16t, 0x0407)<br>
-CV_TYPE(LF_METHOD_16t, 0x0408)<br>
-CV_TYPE(LF_NESTTYPE_16t, 0x0409)<br>
-CV_TYPE(LF_VFUNCTAB_16t, 0x040a)<br>
-CV_TYPE(LF_FRIENDCLS_16t, 0x040b)<br>
-CV_TYPE(LF_ONEMETHOD_16t, 0x040c)<br>
-CV_TYPE(LF_VFUNCOFF_16t, 0x040d)<br>
-<br>
-CV_TYPE(LF_TI16_MAX, 0x1000)<br>
-<br>
-CV_TYPE(LF_ARRAY_ST, 0x1003)<br>
-CV_TYPE(LF_CLASS_ST, 0x1004)<br>
-CV_TYPE(LF_STRUCTURE_ST, 0x1005)<br>
-CV_TYPE(LF_UNION_ST, 0x1006)<br>
-CV_TYPE(LF_ENUM_ST, 0x1007)<br>
-CV_TYPE(LF_COBOL0, 0x100a)<br>
-CV_TYPE(LF_BARRAY, 0x100b)<br>
-CV_TYPE(LF_DIMARRAY_ST, 0x100c)<br>
-CV_TYPE(LF_VFTPATH, 0x100d)<br>
-CV_TYPE(LF_PRECOMP_ST, 0x100e)<br>
-CV_TYPE(LF_OEM, 0x100f)<br>
-CV_TYPE(LF_ALIAS_ST, 0x1010)<br>
-CV_TYPE(LF_OEM2, 0x1011)<br>
-<br>
-CV_TYPE(LF_SKIP, 0x1200)<br>
-CV_TYPE(LF_DEFARG_ST, 0x1202)<br>
-CV_TYPE(LF_DERIVED, 0x1204)<br>
-CV_TYPE(LF_DIMCONU, 0x1207)<br>
-CV_TYPE(LF_DIMCONLU, 0x1208)<br>
-CV_TYPE(LF_DIMVARU, 0x1209)<br>
-CV_TYPE(LF_DIMVARLU, 0x120a)<br>
-<br>
-// Member type records. These are generally not length prefixed, and appear<br>
-// inside of a field list record.<br>
-CV_TYPE(LF_FRIENDFCN_ST, 0x1403)<br>
-CV_TYPE(LF_MEMBER_ST, 0x1405)<br>
-CV_TYPE(LF_STMEMBER_ST, 0x1406)<br>
-CV_TYPE(LF_METHOD_ST, 0x1407)<br>
-CV_TYPE(LF_NESTTYPE_ST, 0x1408)<br>
-CV_TYPE(LF_FRIENDCLS, 0x140a)<br>
-CV_TYPE(LF_ONEMETHOD_ST, 0x140b)<br>
-CV_TYPE(LF_VFUNCOFF, 0x140c)<br>
-CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)<br>
-CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)<br>
-CV_TYPE(LF_MANAGED_ST, 0x140f)<br>
-<br>
-CV_TYPE(LF_ST_MAX, 0x1500)<br>
-CV_TYPE(LF_TYPESERVER, 0x1501)<br>
-CV_TYPE(LF_DIMARRAY, 0x1508)<br>
-CV_TYPE(LF_PRECOMP, 0x1509)<br>
-CV_TYPE(LF_ALIAS, 0x150a)<br>
-CV_TYPE(LF_DEFARG, 0x150b)<br>
-CV_TYPE(LF_FRIENDFCN, 0x150c)<br>
-CV_TYPE(LF_NESTTYPEEX, 0x1512)<br>
-CV_TYPE(LF_MEMBERMODIFY, 0x1513)<br>
-CV_TYPE(LF_MANAGED, 0x1514)<br>
-CV_TYPE(LF_STRIDED_ARRAY, 0x1516)<br>
-CV_TYPE(LF_HLSL, 0x1517)<br>
-CV_TYPE(LF_MODIFIER_EX, 0x1518)<br>
-CV_TYPE(LF_VECTOR, 0x151b)<br>
-CV_TYPE(LF_MATRIX, 0x151c)<br>
-<br>
-// ID leaf records. Subsequent leaf types may be referenced from .debug$S.<br>
-<br>
-// Numeric leaf types. These are generally contained in other records, and not<br>
-// encountered in the main type stream.<br>
-<br>
-CV_TYPE(LF_NUMERIC, 0x8000)<br>
-CV_TYPE(LF_CHAR, 0x8000)<br>
-CV_TYPE(LF_SHORT, 0x8001)<br>
-CV_TYPE(LF_USHORT, 0x8002)<br>
-CV_TYPE(LF_LONG, 0x8003)<br>
-CV_TYPE(LF_ULONG, 0x8004)<br>
-CV_TYPE(LF_REAL32, 0x8005)<br>
-CV_TYPE(LF_REAL64, 0x8006)<br>
-CV_TYPE(LF_REAL80, 0x8007)<br>
-CV_TYPE(LF_REAL128, 0x8008)<br>
-CV_TYPE(LF_QUADWORD, 0x8009)<br>
-CV_TYPE(LF_UQUADWORD, 0x800a)<br>
-CV_TYPE(LF_REAL48, 0x800b)<br>
-CV_TYPE(LF_COMPLEX32, 0x800c)<br>
-CV_TYPE(LF_COMPLEX64, 0x800d)<br>
-CV_TYPE(LF_COMPLEX80, 0x800e)<br>
-CV_TYPE(LF_COMPLEX128, 0x800f)<br>
-CV_TYPE(LF_VARSTRING, 0x8010)<br>
-CV_TYPE(LF_OCTWORD, 0x8017)<br>
-CV_TYPE(LF_UOCTWORD, 0x8018)<br>
-CV_TYPE(LF_DECIMAL, 0x8019)<br>
-CV_TYPE(LF_DATE, 0x801a)<br>
-CV_TYPE(LF_UTF8STRING, 0x801b)<br>
-CV_TYPE(LF_REAL16, 0x801c)<br>
-<br>
-// Padding bytes. These are emitted into alignment bytes in the type stream.<br>
-<br>
-CV_TYPE(LF_PAD0, 0xf0)<br>
-CV_TYPE(LF_PAD1, 0xf1)<br>
-CV_TYPE(LF_PAD2, 0xf2)<br>
-CV_TYPE(LF_PAD3, 0xf3)<br>
-CV_TYPE(LF_PAD4, 0xf4)<br>
-CV_TYPE(LF_PAD5, 0xf5)<br>
-CV_TYPE(LF_PAD6, 0xf6)<br>
-CV_TYPE(LF_PAD7, 0xf7)<br>
-CV_TYPE(LF_PAD8, 0xf8)<br>
-CV_TYPE(LF_PAD9, 0xf9)<br>
-CV_TYPE(LF_PAD10, 0xfa)<br>
-CV_TYPE(LF_PAD11, 0xfb)<br>
-CV_TYPE(LF_PAD12, 0xfc)<br>
-CV_TYPE(LF_PAD13, 0xfd)<br>
-CV_TYPE(LF_PAD14, 0xfe)<br>
-CV_TYPE(LF_PAD15, 0xff)<br>
-<br>
-#undef CV_TYPE<br>
-#undef TYPE_RECORD<br>
-#undef TYPE_RECORD_ALIAS<br>
-#undef MEMBER_RECORD<br>
-#undef MEMBER_RECORD_ALIAS<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeSerializer.h Tue May 30 16:53:05 2017<br>
@@ -106,7 +106,7 @@ public:<br>
     return visitKnownMemberImpl<Name##<wbr>Record>(CVR, Record);                    \<br>
   }<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   template <typename RecordKind><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeTableBuilder.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeTableBuilder.h Tue May 30 16:53:05 2017<br>
@@ -13,8 +13,8 @@<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>TypeIndex.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
 #include "llvm/Support/Allocator.h"<br>
 #include "llvm/Support/Error.h"<br>
 #include <algorithm><br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h Tue May 30 16:53:05 2017<br>
@@ -94,7 +94,7 @@ public:<br>
   }<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   template <typename T> Error visitKnownRecordImpl(CVType &CVR, T &Record) {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h Tue May 30 16:53:05 2017<br>
@@ -58,7 +58,11 @@ public:<br>
<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+#undef TYPE_RECORD<br>
+#undef TYPE_RECORD_ALIAS<br>
+#undef MEMBER_RECORD<br>
+#undef MEMBER_RECORD_ALIAS<br>
 };<br>
<br>
 } // end namespace codeview<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>RawConstants.h Tue May 30 16:53:05 2017<br>
@@ -12,7 +12,6 @@<br>
<br>
 #include "llvm/ADT/BitmaskEnum.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
-<br>
 #include <cstdint><br>
<br>
 namespace llvm {<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>DebugInfo/PDB/Native/<wbr>TpiHashing.h Tue May 30 16:53:05 2017<br>
@@ -38,7 +38,7 @@ public:<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
 #define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
<br>
 private:<br>
   template <typename RecordKind><br>
<br>
Added: llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/ObjectYAML/CodeViewYAML.<wbr>h?rev=304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h (added)<br>
+++ llvm/trunk/include/llvm/<wbr>ObjectYAML/CodeViewYAML.h Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,141 @@<br>
+//===- CodeViewYAML.cpp - CodeView YAMLIO implementation ------------------===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// This file defines classes for handling the YAML representation of CodeView<br>
+// Debug Info.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+#ifndef LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+#define LLVM_OBJECTYAML_CODEVIEWYAML_H<br>
+<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeDeserializer.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>TypeTableBuilder.h"<br>
+#include "llvm/ObjectYAML/YAML.h"<br>
+<br>
+namespace llvm {<br>
+namespace CodeViewYAML {<br>
+<br>
+namespace detail {<br>
+struct MemberRecordBase;<br>
+struct LeafRecordBase;<br>
+}<br>
+<br>
+struct SourceLineEntry {<br>
+  uint32_t Offset;<br>
+  uint32_t LineStart;<br>
+  uint32_t EndDelta;<br>
+  bool IsStatement;<br>
+};<br>
+<br>
+struct SourceColumnEntry {<br>
+  uint16_t StartColumn;<br>
+  uint16_t EndColumn;<br>
+};<br>
+<br>
+struct SourceLineBlock {<br>
+  StringRef FileName;<br>
+  std::vector<SourceLineEntry> Lines;<br>
+  std::vector<SourceColumnEntry> Columns;<br>
+};<br>
+<br>
+struct HexFormattedString {<br>
+  std::vector<uint8_t> Bytes;<br>
+};<br>
+<br>
+struct SourceFileChecksumEntry {<br>
+  StringRef FileName;<br>
+  codeview::FileChecksumKind Kind;<br>
+  HexFormattedString ChecksumBytes;<br>
+};<br>
+<br>
+struct SourceLineInfo {<br>
+  uint32_t RelocOffset;<br>
+  uint32_t RelocSegment;<br>
+  codeview::LineFlags Flags;<br>
+  uint32_t CodeSize;<br>
+<br>
+  std::vector<SourceLineBlock> Blocks;<br>
+};<br>
+<br>
+struct InlineeSite {<br>
+  uint32_t Inlinee;<br>
+  StringRef FileName;<br>
+  uint32_t SourceLineNum;<br>
+  std::vector<StringRef> ExtraFiles;<br>
+};<br>
+<br>
+struct InlineeInfo {<br>
+  bool HasExtraFiles;<br>
+  std::vector<InlineeSite> Sites;<br>
+};<br>
+<br>
+struct SourceFileInfo {<br>
+  std::vector<<wbr>SourceFileChecksumEntry> FileChecksums;<br>
+  std::vector<SourceLineInfo> LineFragments;<br>
+  std::vector<InlineeInfo> Inlinees;<br>
+};<br>
+<br>
+struct MemberRecord {<br>
+  std::shared_ptr<detail::<wbr>MemberRecordBase> Member;<br>
+};<br>
+<br>
+struct LeafRecord {<br>
+  std::shared_ptr<detail::<wbr>LeafRecordBase> Leaf;<br>
+<br>
+  codeview::CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const;<br>
+  static Expected<LeafRecord> fromCodeViewRecord(codeview::<wbr>CVType Type);<br>
+};<br>
+<br>
+} // namespace CodeViewYAML<br>
+} // namespace llvm<br>
+<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(codeview::TypeIndex, false)<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(CodeViewYAML::<wbr>HexFormattedString, false)<br>
+LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(APSInt, false)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceColumnEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceFileChecksumEntry)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceLineBlock)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>SourceFileInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>InlineeInfo)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>InlineeSite)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>LeafRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(CodeViewYAML::<wbr>MemberRecord)<br>
+<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::TypeLeafKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>PointerToMemberRepresentation)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>VFTableSlotKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>CallingConvention)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::PointerKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::PointerMode)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::HfaKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::MemberAccess)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::MethodKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>WindowsRTClassKind)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::LabelType)<br>
+LLVM_YAML_DECLARE_ENUM_<wbr>TRAITS(codeview::<wbr>FileChecksumKind)<br>
+<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>PointerOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::LineFlags)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>ModifierOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>FunctionOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::ClassOptions)<br>
+LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(codeview::<wbr>MethodOptions)<br>
+<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CodeViewYAML::LeafRecord)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CodeViewYAML::MemberRecord)<br>
+<br>
+#endif<br>
<br>
Modified: llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/YAMLTraits.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/Support/YAMLTraits.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h (original)<br>
+++ llvm/trunk/include/llvm/<wbr>Support/YAMLTraits.h Tue May 30 16:53:05 2017<br>
@@ -1606,6 +1606,44 @@ template <typename T> struct StdMapStrin<br>
   }                                                                            \<br>
   }<br>
<br>
+#define LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(Type)                                 \<br>
+  namespace llvm {                                                             \<br>
+  namespace yaml {                                                             \<br>
+  template <> struct MappingTraits<Type> {                                     \<br>
+    static void mapping(IO &IO, Type &Obj);                                    \<br>
+  };                                                                           \<br>
+  }                                                                            \<br>
+  }<br>
+<br>
+#define LLVM_YAML_DECLARE_ENUM_TRAITS(<wbr>Type)                                    \<br>
+  namespace llvm {                                                             \<br>
+  namespace yaml {                                                             \<br>
+  template <> struct ScalarEnumerationTraits<Type> {                           \<br>
+    static void enumeration(IO &io, Type &Value);                              \<br>
+  };                                                                           \<br>
+  }                                                                            \<br>
+  }<br>
+<br>
+#define LLVM_YAML_DECLARE_BITSET_<wbr>TRAITS(Type)                                  \<br>
+  namespace llvm {                                                             \<br>
+  namespace yaml {                                                             \<br>
+  template <> struct ScalarBitSetTraits<Type> {                                \<br>
+    static void bitset(IO &IO, Type &Options);                                 \<br>
+  };                                                                           \<br>
+  }                                                                            \<br>
+  }<br>
+<br>
+#define LLVM_YAML_DECLARE_SCALAR_<wbr>TRAITS(Type, MustQuote)                       \<br>
+  namespace llvm {                                                             \<br>
+  namespace yaml {                                                             \<br>
+  template <> struct ScalarTraits<Type> {                                      \<br>
+    static void output(const Type &Value, void *ctx, llvm::raw_ostream &Out);  \<br>
+    static StringRef input(StringRef Scalar, void *ctxt, Type &Value);         \<br>
+    static bool mustQuote(StringRef) { return MustQuote; }                     \<br>
+  };                                                                           \<br>
+  }                                                                            \<br>
+  }<br>
+<br>
 /// Utility for declaring that a std::vector of a particular type<br>
 /// should be considered a YAML document list.<br>
 #define LLVM_YAML_IS_DOCUMENT_LIST_<wbr>VECTOR(_type)                               \<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>CVSymbolVisitor.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVSymbolVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -46,7 +46,7 @@ Error CVSymbolVisitor::<wbr>visitSymbolRecord<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)                \<br>
   SYMBOL_RECORD(EnumVal, EnumVal, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
   }<br>
<br>
   if (auto EC = Callbacks.visitSymbolEnd(<wbr>Record))<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>CVTypeVisitor.cpp?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/CVTypeVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -71,7 +71,7 @@ static Error visitMemberRecord(CVMemberR<br>
   MEMBER_RECORD(EnumVal, EnumVal, AliasName)<br>
 #define TYPE_RECORD(EnumName, EnumVal, Name)<br>
 #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
   }<br>
<br>
   if (auto EC = Callbacks.visitMemberEnd(<wbr>Record))<br>
@@ -155,7 +155,7 @@ Error CVTypeVisitor::<wbr>finishVisitation(CV<br>
   TYPE_RECORD(EnumVal, EnumVal, AliasName)<br>
 #define MEMBER_RECORD(EnumName, EnumVal, Name)<br>
 #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
   }<br>
<br>
   if (auto EC = Callbacks.visitTypeEnd(Record)<wbr>)<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/EnumTables.<wbr>cpp?rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/EnumTables.cpp Tue May 30 16:53:05 2017<br>
@@ -20,13 +20,13 @@ using namespace codeview;<br>
<br>
 static const EnumEntry<SymbolKind> SymbolTypeNames[] = {<br>
 #define CV_SYMBOL(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
 #undef CV_SYMBOL<br>
 };<br>
<br>
 static const EnumEntry<TypeLeafKind> TypeLeafNames[] = {<br>
 #define CV_TYPE(name, val) {#name, name},<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
 #undef CV_TYPE<br>
 };<br>
<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>SymbolDumper.cpp?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/SymbolDumper.cpp Tue May 30 16:53:05 2017<br>
@@ -41,7 +41,7 @@ public:<br>
 #define SYMBOL_RECORD(EnumName, EnumVal, Name)                                 \<br>
   Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
   Error visitSymbolBegin(CVSymbol &Record) override;<br>
   Error visitSymbolEnd(CVSymbol &Record) override;<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>DebugInfo/CodeView/<wbr>TypeDumpVisitor.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/<wbr>CodeView/TypeDumpVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -26,7 +26,7 @@ using namespace llvm::codeview;<br>
<br>
 static const EnumEntry<TypeLeafKind> LeafTypeNames[] = {<br>
 #define CV_TYPE(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
 };<br>
<br>
 #define ENUM_ENTRY(enum_class, enum)                                           \<br>
@@ -155,7 +155,7 @@ static StringRef getLeafTypeName(TypeLea<br>
 #define TYPE_RECORD(ename, value, name)                                        \<br>
   case ename:                                                                  \<br>
     return #name;<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
   default:<br>
     break;<br>
   }<br>
<br>
Modified: llvm/trunk/lib/MC/MCCodeView.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCCodeView.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/MC/<wbr>MCCodeView.cpp?rev=304248&r1=<wbr>304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/MC/MCCodeView.<wbr>cpp (original)<br>
+++ llvm/trunk/lib/MC/MCCodeView.<wbr>cpp Tue May 30 16:53:05 2017<br>
@@ -12,11 +12,11 @@<br>
 //===-------------------------<wbr>------------------------------<wbr>---------------===//<br>
<br>
 #include "llvm/MC/MCCodeView.h"<br>
-#include "llvm/MC/MCAsmLayout.h"<br>
 #include "llvm/ADT/STLExtras.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
 #include "llvm/DebugInfo/CodeView/Line.<wbr>h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>SymbolRecord.h"<br>
+#include "llvm/MC/MCAsmLayout.h"<br>
 #include "llvm/MC/MCContext.h"<br>
 #include "llvm/MC/MCObjectStreamer.h"<br>
 #include "llvm/MC/MCValue.h"<br>
<br>
Modified: llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/CMakeLists.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/CMakeLists.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>CMakeLists.txt Tue May 30 16:53:05 2017<br>
@@ -1,4 +1,5 @@<br>
 add_llvm_library(<wbr>LLVMObjectYAML<br>
+  CodeViewYAML.cpp<br>
   COFFYAML.cpp<br>
   DWARFEmitter.cpp<br>
   DWARFVisitor.cpp<br>
<br>
Added: llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/CodeViewYAML.cpp?rev=304248&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/CodeViewYAML.cpp?<wbr>rev=304248&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp (added)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>CodeViewYAML.cpp Tue May 30 16:53:05 2017<br>
@@ -0,0 +1,759 @@<br>
+//===- CodeViewYAML.cpp - CodeView YAMLIO implementation ------------------===//<br>
+//<br>
+//                     The LLVM Compiler Infrastructure<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+//<br>
+// This file defines classes for handling the YAML representation of CodeView<br>
+// Debug Info.<br>
+//<br>
+//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
+<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
+#include "llvm/ADT/StringExtras.h"<br>
+#include "llvm/ADT/StringSwitch.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CVTypeVisitor.h"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewError.h"<br>
+<br>
+using namespace llvm;<br>
+using namespace llvm::codeview;<br>
+using namespace llvm::CodeViewYAML;<br>
+using namespace llvm::CodeViewYAML::detail;<br>
+using namespace llvm::yaml;<br>
+<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceFileChecksumEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceColumnEntry)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineBlock)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>SourceLineInfo)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>InlineeSite)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>InlineeInfo)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRecord)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>uint32_t)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
+LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>TypeIndex)<br>
+<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(llvm::codeview::<wbr>OneMethodRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(llvm::codeview::<wbr>MemberPointerInfo)<br>
+<br>
+namespace llvm {<br>
+namespace CodeViewYAML {<br>
+namespace detail {<br>
+<br>
+struct LeafRecordBase {<br>
+  TypeLeafKind Kind;<br>
+  explicit LeafRecordBase(TypeLeafKind K) : Kind(K) {}<br>
+<br>
+  virtual ~LeafRecordBase() {}<br>
+  virtual void map(yaml::IO &io) = 0;<br>
+  virtual CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const = 0;<br>
+  virtual Error fromCodeViewRecord(CVType Type) = 0;<br>
+};<br>
+<br>
+template <typename T> struct LeafRecordImpl : public LeafRecordBase {<br>
+  explicit LeafRecordImpl(TypeLeafKind K)<br>
+      : LeafRecordBase(K), Record(static_cast<<wbr>TypeRecordKind>(K)) {}<br>
+<br>
+  void map(yaml::IO &io) override;<br>
+<br>
+  Error fromCodeViewRecord(CVType Type) override {<br>
+    return TypeDeserializer::<wbr>deserializeAs<T>(Type, Record);<br>
+  }<br>
+<br>
+  CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const override {<br>
+    TypeTableBuilder Table(Allocator);<br>
+    Table.writeKnownType(Record);<br>
+    return CVType(Kind, Table.records().front());<br>
+  }<br>
+<br>
+  mutable T Record;<br>
+};<br>
+<br>
+template <> struct LeafRecordImpl<<wbr>FieldListRecord> : public LeafRecordBase {<br>
+  explicit LeafRecordImpl(TypeLeafKind K) : LeafRecordBase(K) {}<br>
+<br>
+  void map(yaml::IO &io) override;<br>
+  CVType toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const override;<br>
+  Error fromCodeViewRecord(CVType Type) override;<br>
+<br>
+  std::vector<MemberRecord> Members;<br>
+};<br>
+<br>
+struct MemberRecordBase {<br>
+  TypeLeafKind Kind;<br>
+  explicit MemberRecordBase(TypeLeafKind K) : Kind(K) {}<br>
+<br>
+  virtual ~MemberRecordBase() {}<br>
+  virtual void map(yaml::IO &io) = 0;<br>
+  virtual void writeTo(FieldListRecordBuilder &FLRB) = 0;<br>
+};<br>
+<br>
+template <typename T> struct MemberRecordImpl : public MemberRecordBase {<br>
+  explicit MemberRecordImpl(TypeLeafKind K)<br>
+      : MemberRecordBase(K), Record(static_cast<<wbr>TypeRecordKind>(K)) {}<br>
+  void map(yaml::IO &io) override;<br>
+<br>
+  void writeTo(FieldListRecordBuilder &FLRB) override {<br>
+    FLRB.writeMemberType(Record);<br>
+  }<br>
+<br>
+  mutable T Record;<br>
+};<br>
+}<br>
+}<br>
+}<br>
+<br>
+void ScalarTraits<TypeIndex>::<wbr>output(const TypeIndex &S, void *,<br>
+                                     llvm::raw_ostream &OS) {<br>
+  OS << S.getIndex();<br>
+}<br>
+<br>
+StringRef ScalarTraits<TypeIndex>::<wbr>input(StringRef Scalar, void *Ctx,<br>
+                                         TypeIndex &S) {<br>
+  uint32_t I;<br>
+  StringRef Result = ScalarTraits<uint32_t>::input(<wbr>Scalar, Ctx, I);<br>
+  S.setIndex(I);<br>
+  return Result;<br>
+}<br>
+<br>
+void ScalarTraits<APSInt>::output(<wbr>const APSInt &S, void *,<br>
+                                  llvm::raw_ostream &OS) {<br>
+  S.print(OS, true);<br>
+}<br>
+<br>
+StringRef ScalarTraits<APSInt>::input(<wbr>StringRef Scalar, void *Ctx, APSInt &S) {<br>
+  S = APSInt(Scalar);<br>
+  return "";<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>TypeLeafKind>::enumeration(IO &io,<br>
+                                                        TypeLeafKind &Value) {<br>
+#define CV_TYPE(name, val) io.enumCase(Value, #name, name);<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+#undef CV_TYPE<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerToMemberRepresentation><wbr>::enumeration(<br>
+    IO &IO, PointerToMemberRepresentation &Value) {<br>
+  IO.enumCase(Value, "Unknown", PointerToMemberRepresentation:<wbr>:Unknown);<br>
+  IO.enumCase(Value, "SingleInheritanceData",<br>
+              PointerToMemberRepresentation:<wbr>:SingleInheritanceData);<br>
+  IO.enumCase(Value, "MultipleInheritanceData",<br>
+              PointerToMemberRepresentation:<wbr>:MultipleInheritanceData);<br>
+  IO.enumCase(Value, "VirtualInheritanceData",<br>
+              PointerToMemberRepresentation:<wbr>:VirtualInheritanceData);<br>
+  IO.enumCase(Value, "GeneralData", PointerToMemberRepresentation:<wbr>:GeneralData);<br>
+  IO.enumCase(Value, "SingleInheritanceFunction",<br>
+              PointerToMemberRepresentation:<wbr>:SingleInheritanceFunction);<br>
+  IO.enumCase(Value, "MultipleInheritanceFunction",<br>
+              PointerToMemberRepresentation:<wbr>:MultipleInheritanceFunction);<br>
+  IO.enumCase(Value, "VirtualInheritanceFunction",<br>
+              PointerToMemberRepresentation:<wbr>:VirtualInheritanceFunction);<br>
+  IO.enumCase(Value, "GeneralFunction",<br>
+              PointerToMemberRepresentation:<wbr>:GeneralFunction);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>VFTableSlotKind>::enumeration(<br>
+    IO &IO, VFTableSlotKind &Kind) {<br>
+  IO.enumCase(Kind, "Near16", VFTableSlotKind::Near16);<br>
+  IO.enumCase(Kind, "Far16", VFTableSlotKind::Far16);<br>
+  IO.enumCase(Kind, "This", VFTableSlotKind::This);<br>
+  IO.enumCase(Kind, "Outer", VFTableSlotKind::Outer);<br>
+  IO.enumCase(Kind, "Meta", VFTableSlotKind::Meta);<br>
+  IO.enumCase(Kind, "Near", VFTableSlotKind::Near);<br>
+  IO.enumCase(Kind, "Far", VFTableSlotKind::Far);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>CallingConvention>::<wbr>enumeration(<br>
+    IO &IO, CallingConvention &Value) {<br>
+  IO.enumCase(Value, "NearC", CallingConvention::NearC);<br>
+  IO.enumCase(Value, "FarC", CallingConvention::FarC);<br>
+  IO.enumCase(Value, "NearPascal", CallingConvention::NearPascal)<wbr>;<br>
+  IO.enumCase(Value, "FarPascal", CallingConvention::FarPascal);<br>
+  IO.enumCase(Value, "NearFast", CallingConvention::NearFast);<br>
+  IO.enumCase(Value, "FarFast", CallingConvention::FarFast);<br>
+  IO.enumCase(Value, "NearStdCall", CallingConvention::<wbr>NearStdCall);<br>
+  IO.enumCase(Value, "FarStdCall", CallingConvention::FarStdCall)<wbr>;<br>
+  IO.enumCase(Value, "NearSysCall", CallingConvention::<wbr>NearSysCall);<br>
+  IO.enumCase(Value, "FarSysCall", CallingConvention::FarSysCall)<wbr>;<br>
+  IO.enumCase(Value, "ThisCall", CallingConvention::ThisCall);<br>
+  IO.enumCase(Value, "MipsCall", CallingConvention::MipsCall);<br>
+  IO.enumCase(Value, "Generic", CallingConvention::Generic);<br>
+  IO.enumCase(Value, "AlphaCall", CallingConvention::AlphaCall);<br>
+  IO.enumCase(Value, "PpcCall", CallingConvention::PpcCall);<br>
+  IO.enumCase(Value, "SHCall", CallingConvention::SHCall);<br>
+  IO.enumCase(Value, "ArmCall", CallingConvention::ArmCall);<br>
+  IO.enumCase(Value, "AM33Call", CallingConvention::AM33Call);<br>
+  IO.enumCase(Value, "TriCall", CallingConvention::TriCall);<br>
+  IO.enumCase(Value, "SH5Call", CallingConvention::SH5Call);<br>
+  IO.enumCase(Value, "M32RCall", CallingConvention::M32RCall);<br>
+  IO.enumCase(Value, "ClrCall", CallingConvention::ClrCall);<br>
+  IO.enumCase(Value, "Inline", CallingConvention::Inline);<br>
+  IO.enumCase(Value, "NearVector", CallingConvention::NearVector)<wbr>;<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerKind>::enumeration(IO &IO,<br>
+                                                       PointerKind &Kind) {<br>
+  IO.enumCase(Kind, "Near16", PointerKind::Near16);<br>
+  IO.enumCase(Kind, "Far16", PointerKind::Far16);<br>
+  IO.enumCase(Kind, "Huge16", PointerKind::Huge16);<br>
+  IO.enumCase(Kind, "BasedOnSegment", PointerKind::BasedOnSegment);<br>
+  IO.enumCase(Kind, "BasedOnValue", PointerKind::BasedOnValue);<br>
+  IO.enumCase(Kind, "BasedOnSegmentValue", PointerKind::<wbr>BasedOnSegmentValue);<br>
+  IO.enumCase(Kind, "BasedOnAddress", PointerKind::BasedOnAddress);<br>
+  IO.enumCase(Kind, "BasedOnSegmentAddress",<br>
+              PointerKind::<wbr>BasedOnSegmentAddress);<br>
+  IO.enumCase(Kind, "BasedOnType", PointerKind::BasedOnType);<br>
+  IO.enumCase(Kind, "BasedOnSelf", PointerKind::BasedOnSelf);<br>
+  IO.enumCase(Kind, "Near32", PointerKind::Near32);<br>
+  IO.enumCase(Kind, "Far32", PointerKind::Far32);<br>
+  IO.enumCase(Kind, "Near64", PointerKind::Near64);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>PointerMode>::enumeration(IO &IO,<br>
+                                                       PointerMode &Mode) {<br>
+  IO.enumCase(Mode, "Pointer", PointerMode::Pointer);<br>
+  IO.enumCase(Mode, "LValueReference", PointerMode::LValueReference);<br>
+  IO.enumCase(Mode, "PointerToDataMember", PointerMode::<wbr>PointerToDataMember);<br>
+  IO.enumCase(Mode, "PointerToMemberFunction",<br>
+              PointerMode::<wbr>PointerToMemberFunction);<br>
+  IO.enumCase(Mode, "RValueReference", PointerMode::RValueReference);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>HfaKind>::enumeration(IO &IO, HfaKind &Value) {<br>
+  IO.enumCase(Value, "None", HfaKind::None);<br>
+  IO.enumCase(Value, "Float", HfaKind::Float);<br>
+  IO.enumCase(Value, "Double", HfaKind::Double);<br>
+  IO.enumCase(Value, "Other", HfaKind::Other);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>MemberAccess>::enumeration(IO &IO,<br>
+                                                        MemberAccess &Access) {<br>
+  IO.enumCase(Access, "None", MemberAccess::None);<br>
+  IO.enumCase(Access, "Private", MemberAccess::Private);<br>
+  IO.enumCase(Access, "Protected", MemberAccess::Protected);<br>
+  IO.enumCase(Access, "Public", MemberAccess::Public);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>MethodKind>::enumeration(IO &IO,<br>
+                                                      MethodKind &Kind) {<br>
+  IO.enumCase(Kind, "Vanilla", MethodKind::Vanilla);<br>
+  IO.enumCase(Kind, "Virtual", MethodKind::Virtual);<br>
+  IO.enumCase(Kind, "Static", MethodKind::Static);<br>
+  IO.enumCase(Kind, "Friend", MethodKind::Friend);<br>
+  IO.enumCase(Kind, "IntroducingVirtual", MethodKind::<wbr>IntroducingVirtual);<br>
+  IO.enumCase(Kind, "PureVirtual", MethodKind::PureVirtual);<br>
+  IO.enumCase(Kind, "PureIntroducingVirtual",<br>
+              MethodKind::<wbr>PureIntroducingVirtual);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>WindowsRTClassKind>::<wbr>enumeration(<br>
+    IO &IO, WindowsRTClassKind &Value) {<br>
+  IO.enumCase(Value, "None", WindowsRTClassKind::None);<br>
+  IO.enumCase(Value, "Ref", WindowsRTClassKind::RefClass);<br>
+  IO.enumCase(Value, "Value", WindowsRTClassKind::<wbr>ValueClass);<br>
+  IO.enumCase(Value, "Interface", WindowsRTClassKind::Interface)<wbr>;<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>LabelType>::enumeration(IO &IO, LabelType &Value) {<br>
+  IO.enumCase(Value, "Near", LabelType::Near);<br>
+  IO.enumCase(Value, "Far", LabelType::Far);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>PointerOptions>::bitset(IO &IO,<br>
+                                                PointerOptions &Options) {<br>
+  IO.bitSetCase(Options, "None", PointerOptions::None);<br>
+  IO.bitSetCase(Options, "Flat32", PointerOptions::Flat32);<br>
+  IO.bitSetCase(Options, "Volatile", PointerOptions::Volatile);<br>
+  IO.bitSetCase(Options, "Const", PointerOptions::Const);<br>
+  IO.bitSetCase(Options, "Unaligned", PointerOptions::Unaligned);<br>
+  IO.bitSetCase(Options, "Restrict", PointerOptions::Restrict);<br>
+  IO.bitSetCase(Options, "WinRTSmartPointer",<br>
+                PointerOptions::<wbr>WinRTSmartPointer);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>ModifierOptions>::bitset(IO &IO,<br>
+                                                 ModifierOptions &Options) {<br>
+  IO.bitSetCase(Options, "None", ModifierOptions::None);<br>
+  IO.bitSetCase(Options, "Const", ModifierOptions::Const);<br>
+  IO.bitSetCase(Options, "Volatile", ModifierOptions::Volatile);<br>
+  IO.bitSetCase(Options, "Unaligned", ModifierOptions::Unaligned);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>FunctionOptions>::bitset(IO &IO,<br>
+                                                 FunctionOptions &Options) {<br>
+  IO.bitSetCase(Options, "None", FunctionOptions::None);<br>
+  IO.bitSetCase(Options, "CxxReturnUdt", FunctionOptions::CxxReturnUdt)<wbr>;<br>
+  IO.bitSetCase(Options, "Constructor", FunctionOptions::Constructor);<br>
+  IO.bitSetCase(Options, "ConstructorWithVirtualBases",<br>
+                FunctionOptions::<wbr>ConstructorWithVirtualBases);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>ClassOptions>::bitset(IO &IO, ClassOptions &Options) {<br>
+  IO.bitSetCase(Options, "None", ClassOptions::None);<br>
+  IO.bitSetCase(Options, "HasConstructorOrDestructor",<br>
+                ClassOptions::<wbr>HasConstructorOrDestructor);<br>
+  IO.bitSetCase(Options, "HasOverloadedOperator",<br>
+                ClassOptions::<wbr>HasOverloadedOperator);<br>
+  IO.bitSetCase(Options, "Nested", ClassOptions::Nested);<br>
+  IO.bitSetCase(Options, "ContainsNestedClass",<br>
+                ClassOptions::<wbr>ContainsNestedClass);<br>
+  IO.bitSetCase(Options, "<wbr>HasOverloadedAssignmentOperato<wbr>r",<br>
+                ClassOptions::<wbr>HasOverloadedAssignmentOperato<wbr>r);<br>
+  IO.bitSetCase(Options, "HasConversionOperator",<br>
+                ClassOptions::<wbr>HasConversionOperator);<br>
+  IO.bitSetCase(Options, "ForwardReference", ClassOptions::<wbr>ForwardReference);<br>
+  IO.bitSetCase(Options, "Scoped", ClassOptions::Scoped);<br>
+  IO.bitSetCase(Options, "HasUniqueName", ClassOptions::HasUniqueName);<br>
+  IO.bitSetCase(Options, "Sealed", ClassOptions::Sealed);<br>
+  IO.bitSetCase(Options, "Intrinsic", ClassOptions::Intrinsic);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<<wbr>MethodOptions>::bitset(IO &IO, MethodOptions &Options) {<br>
+  IO.bitSetCase(Options, "None", MethodOptions::None);<br>
+  IO.bitSetCase(Options, "Pseudo", MethodOptions::Pseudo);<br>
+  IO.bitSetCase(Options, "NoInherit", MethodOptions::NoInherit);<br>
+  IO.bitSetCase(Options, "NoConstruct", MethodOptions::NoConstruct);<br>
+  IO.bitSetCase(Options, "CompilerGenerated", MethodOptions::<wbr>CompilerGenerated);<br>
+  IO.bitSetCase(Options, "Sealed", MethodOptions::Sealed);<br>
+}<br>
+<br>
+void ScalarEnumerationTraits<<wbr>FileChecksumKind>::<wbr>enumeration(<br>
+    IO &io, FileChecksumKind &Kind) {<br>
+  io.enumCase(Kind, "None", FileChecksumKind::None);<br>
+  io.enumCase(Kind, "MD5", FileChecksumKind::MD5);<br>
+  io.enumCase(Kind, "SHA1", FileChecksumKind::SHA1);<br>
+  io.enumCase(Kind, "SHA256", FileChecksumKind::SHA256);<br>
+}<br>
+<br>
+void ScalarBitSetTraits<LineFlags>:<wbr>:bitset(IO &io, LineFlags &Flags) {<br>
+  io.bitSetCase(Flags, "HasColumnInfo", LF_HaveColumns);<br>
+  io.enumFallback<Hex16>(Flags);<br>
+}<br>
+<br>
+void ScalarTraits<<wbr>HexFormattedString>::output(<wbr>const HexFormattedString &Value,<br>
+                                              void *ctx, raw_ostream &Out) {<br>
+  StringRef Bytes(reinterpret_cast<const char *>(Value.Bytes.data()),<br>
+                  Value.Bytes.size());<br>
+  Out << toHex(Bytes);<br>
+}<br>
+<br>
+StringRef ScalarTraits<<wbr>HexFormattedString>::input(<wbr>StringRef Scalar, void *ctxt,<br>
+                                                  HexFormattedString &Value) {<br>
+  std::string H = fromHex(Scalar);<br>
+  Value.Bytes.assign(H.begin(), H.end());<br>
+  return StringRef();<br>
+}<br>
+<br>
+void MappingTraits<SourceLineEntry><wbr>::mapping(IO &IO, SourceLineEntry &Obj) {<br>
+  IO.mapRequired("Offset", Obj.Offset);<br>
+  IO.mapRequired("LineStart", Obj.LineStart);<br>
+  IO.mapRequired("IsStatement", Obj.IsStatement);<br>
+  IO.mapRequired("EndDelta", Obj.EndDelta);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>SourceColumnEntry>::mapping(IO &IO, SourceColumnEntry &Obj) {<br>
+  IO.mapRequired("StartColumn", Obj.StartColumn);<br>
+  IO.mapRequired("EndColumn", Obj.EndColumn);<br>
+}<br>
+<br>
+void MappingTraits<SourceLineBlock><wbr>::mapping(IO &IO, SourceLineBlock &Obj) {<br>
+  IO.mapRequired("FileName", Obj.FileName);<br>
+  IO.mapRequired("Lines", Obj.Lines);<br>
+  IO.mapRequired("Columns", Obj.Columns);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>SourceFileChecksumEntry>::<wbr>mapping(<br>
+    IO &IO, SourceFileChecksumEntry &Obj) {<br>
+  IO.mapRequired("FileName", Obj.FileName);<br>
+  IO.mapRequired("Kind", Obj.Kind);<br>
+  IO.mapRequired("Checksum", Obj.ChecksumBytes);<br>
+}<br>
+<br>
+void MappingTraits<SourceLineInfo>:<wbr>:mapping(IO &IO, SourceLineInfo &Obj) {<br>
+  IO.mapRequired("CodeSize", Obj.CodeSize);<br>
+<br>
+  IO.mapRequired("Flags", Obj.Flags);<br>
+  IO.mapRequired("RelocOffset", Obj.RelocOffset);<br>
+  IO.mapRequired("RelocSegment", Obj.RelocSegment);<br>
+  IO.mapRequired("Blocks", Obj.Blocks);<br>
+}<br>
+<br>
+void MappingTraits<SourceFileInfo>:<wbr>:mapping(IO &IO, SourceFileInfo &Obj) {<br>
+  IO.mapOptional("Checksums", Obj.FileChecksums);<br>
+  IO.mapOptional("Lines", Obj.LineFragments);<br>
+  IO.mapOptional("InlineeLines", Obj.Inlinees);<br>
+}<br>
+<br>
+void MappingTraits<InlineeSite>::<wbr>mapping(IO &IO, InlineeSite &Obj) {<br>
+  IO.mapRequired("FileName", Obj.FileName);<br>
+  IO.mapRequired("LineNum", Obj.SourceLineNum);<br>
+  IO.mapRequired("Inlinee", Obj.Inlinee);<br>
+  IO.mapOptional("ExtraFiles", Obj.ExtraFiles);<br>
+}<br>
+<br>
+void MappingTraits<InlineeInfo>::<wbr>mapping(IO &IO, InlineeInfo &Obj) {<br>
+  IO.mapRequired("HasExtraFiles"<wbr>, Obj.HasExtraFiles);<br>
+  IO.mapRequired("Sites", Obj.Sites);<br>
+}<br>
+<br>
+void MappingTraits<<wbr>MemberPointerInfo>::mapping(IO &IO, MemberPointerInfo &MPI) {<br>
+  IO.mapRequired("<wbr>ContainingType", MPI.ContainingType);<br>
+  IO.mapRequired("<wbr>Representation", MPI.Representation);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ModifierRecord><wbr>::map(IO &IO) {<br>
+  IO.mapRequired("ModifiedType", Record.ModifiedType);<br>
+  IO.mapRequired("Modifiers", Record.Modifiers);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>ProcedureRecord>::map(IO &IO) {<br>
+  IO.mapRequired("ReturnType", Record.ReturnType);<br>
+  IO.mapRequired("CallConv", Record.CallConv);<br>
+  IO.mapRequired("Options", Record.Options);<br>
+  IO.mapRequired("<wbr>ParameterCount", Record.ParameterCount);<br>
+  IO.mapRequired("ArgumentList", Record.ArgumentList);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MemberFunctionRecord>::map(IO &IO) {<br>
+  IO.mapRequired("ReturnType", Record.ReturnType);<br>
+  IO.mapRequired("ClassType", Record.ClassType);<br>
+  IO.mapRequired("ThisType", Record.ThisType);<br>
+  IO.mapRequired("CallConv", Record.CallConv);<br>
+  IO.mapRequired("Options", Record.Options);<br>
+  IO.mapRequired("<wbr>ParameterCount", Record.ParameterCount);<br>
+  IO.mapRequired("ArgumentList", Record.ArgumentList);<br>
+  IO.mapRequired("<wbr>ThisPointerAdjustment", Record.ThisPointerAdjustment);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<LabelRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("Mode", Record.Mode);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MemberFuncIdRecord>::map(IO &IO) {<br>
+  IO.mapRequired("ClassType", Record.ClassType);<br>
+  IO.mapRequired("FunctionType", Record.FunctionType);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ArgListRecord>:<wbr>:map(IO &IO) {<br>
+  IO.mapRequired("ArgIndices", Record.ArgIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>StringListRecord>::map(IO &IO) {<br>
+  IO.mapRequired("StringIndices"<wbr>, Record.StringIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<PointerRecord>:<wbr>:map(IO &IO) {<br>
+  IO.mapRequired("ReferentType", Record.ReferentType);<br>
+  IO.mapRequired("Attrs", Record.Attrs);<br>
+  IO.mapOptional("MemberInfo", Record.MemberInfo);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ArrayRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("ElementType", Record.ElementType);<br>
+  IO.mapRequired("IndexType", Record.IndexType);<br>
+  IO.mapRequired("Size", Record.Size);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+void LeafRecordImpl<<wbr>FieldListRecord>::map(IO &IO) {<br>
+  IO.mapRequired("FieldList", Members);<br>
+}<br>
+<br>
+namespace {<br>
+class MemberRecordConversionVisitor : public TypeVisitorCallbacks {<br>
+public:<br>
+  explicit MemberRecordConversionVisitor(<wbr>std::vector<MemberRecord> &Records)<br>
+      : Records(Records) {}<br>
+<br>
+#define TYPE_RECORD(EnumName, EnumVal, Name)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \<br>
+  Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override { \<br>
+    return visitKnownMemberImpl(Record);                                       \<br>
+  }<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+private:<br>
+  template <typename T> Error visitKnownMemberImpl(T &Record) {<br>
+    TypeLeafKind K = static_cast<TypeLeafKind>(<wbr>Record.getKind());<br>
+    auto Impl = std::make_shared<<wbr>MemberRecordImpl<T>>(K);<br>
+    Impl->Record = Record;<br>
+    Records.push_back(<wbr>MemberRecord{Impl});<br>
+    return Error::success();<br>
+  }<br>
+<br>
+  std::vector<MemberRecord> &Records;<br>
+};<br>
+}<br>
+<br>
+Error LeafRecordImpl<<wbr>FieldListRecord>::<wbr>fromCodeViewRecord(CVType Type) {<br>
+  MemberRecordConversionVisitor V(Members);<br>
+  return visitMemberRecordStream(Type.<wbr>content(), V);<br>
+}<br>
+<br>
+CVType LeafRecordImpl<<wbr>FieldListRecord>::<wbr>toCodeViewRecord(<br>
+    BumpPtrAllocator &Allocator) const {<br>
+  TypeTableBuilder TTB(Allocator);<br>
+  FieldListRecordBuilder FLRB(TTB);<br>
+  FLRB.begin();<br>
+  for (const auto &Member : Members) {<br>
+    Member.Member->writeTo(FLRB);<br>
+  }<br>
+  FLRB.end(true);<br>
+  return CVType(Kind, TTB.records().front());<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<ClassRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("MemberCount", Record.MemberCount);<br>
+  IO.mapRequired("Options", Record.Options);<br>
+  IO.mapRequired("FieldList", Record.FieldList);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+  IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+  IO.mapRequired("<wbr>DerivationList", Record.DerivationList);<br>
+  IO.mapRequired("VTableShape", Record.VTableShape);<br>
+  IO.mapRequired("Size", Record.Size);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<UnionRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("MemberCount", Record.MemberCount);<br>
+  IO.mapRequired("Options", Record.Options);<br>
+  IO.mapRequired("FieldList", Record.FieldList);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+  IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+  IO.mapRequired("Size", Record.Size);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<EnumRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("<wbr>NumEnumerators", Record.MemberCount);<br>
+  IO.mapRequired("Options", Record.Options);<br>
+  IO.mapRequired("FieldList", Record.FieldList);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+  IO.mapRequired("UniqueName", Record.UniqueName);<br>
+<br>
+  IO.mapRequired("<wbr>UnderlyingType", Record.UnderlyingType);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<BitFieldRecord><wbr>::map(IO &IO) {<br>
+  IO.mapRequired("Type", Record.Type);<br>
+  IO.mapRequired("BitSize", Record.BitSize);<br>
+  IO.mapRequired("BitOffset", Record.BitOffset);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>VFTableShapeRecord>::map(IO &IO) {<br>
+  IO.mapRequired("Slots", Record.Slots);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>TypeServer2Record>::map(IO &IO) {<br>
+  IO.mapRequired("Guid", Record.Guid);<br>
+  IO.mapRequired("Age", Record.Age);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<StringIdRecord><wbr>::map(IO &IO) {<br>
+  IO.mapRequired("Id", Record.Id);<br>
+  IO.mapRequired("String", Record.String);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<FuncIdRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("ParentScope", Record.ParentScope);<br>
+  IO.mapRequired("FunctionType", Record.FunctionType);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>UdtSourceLineRecord>::map(IO &IO) {<br>
+  IO.mapRequired("UDT", Record.UDT);<br>
+  IO.mapRequired("SourceFile", Record.SourceFile);<br>
+  IO.mapRequired("LineNumber", Record.LineNumber);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>UdtModSourceLineRecord>::map(<wbr>IO &IO) {<br>
+  IO.mapRequired("UDT", Record.UDT);<br>
+  IO.mapRequired("SourceFile", Record.SourceFile);<br>
+  IO.mapRequired("LineNumber", Record.LineNumber);<br>
+  IO.mapRequired("Module", Record.Module);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>BuildInfoRecord>::map(IO &IO) {<br>
+  IO.mapRequired("ArgIndices", Record.ArgIndices);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<VFTableRecord>:<wbr>:map(IO &IO) {<br>
+  IO.mapRequired("CompleteClass"<wbr>, Record.CompleteClass);<br>
+  IO.mapRequired("<wbr>OverriddenVFTable", Record.OverriddenVFTable);<br>
+  IO.mapRequired("VFPtrOffset", Record.VFPtrOffset);<br>
+  IO.mapRequired("MethodNames", Record.MethodNames);<br>
+}<br>
+<br>
+template <> void LeafRecordImpl<<wbr>MethodOverloadListRecord>::<wbr>map(IO &IO) {<br>
+  IO.mapRequired("Methods", Record.Methods);<br>
+}<br>
+<br>
+void MappingTraits<OneMethodRecord><wbr>::mapping(IO &io, OneMethodRecord &Record) {<br>
+  io.mapRequired("Type", Record.Type);<br>
+  io.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  io.mapRequired("VFTableOffset"<wbr>, Record.VFTableOffset);<br>
+  io.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>OneMethodRecord>::map(IO &IO) {<br>
+  MappingTraits<OneMethodRecord><wbr>::mapping(IO, Record);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>OverloadedMethodRecord>::map(<wbr>IO &IO) {<br>
+  IO.mapRequired("NumOverloads", Record.NumOverloads);<br>
+  IO.mapRequired("MethodList", Record.MethodList);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>NestedTypeRecord>::map(IO &IO) {<br>
+  IO.mapRequired("Type", Record.Type);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>DataMemberRecord>::map(IO &IO) {<br>
+  IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  IO.mapRequired("Type", Record.Type);<br>
+  IO.mapRequired("FieldOffset", Record.FieldOffset);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>StaticDataMemberRecord>::map(<wbr>IO &IO) {<br>
+  IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  IO.mapRequired("Type", Record.Type);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>EnumeratorRecord>::map(IO &IO) {<br>
+  IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  IO.mapRequired("Value", Record.Value);<br>
+  IO.mapRequired("Name", Record.Name);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<VFPtrRecord>:<wbr>:map(IO &IO) {<br>
+  IO.mapRequired("Type", Record.Type);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>BaseClassRecord>::map(IO &IO) {<br>
+  IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  IO.mapRequired("Type", Record.Type);<br>
+  IO.mapRequired("Offset", Record.Offset);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>VirtualBaseClassRecord>::map(<wbr>IO &IO) {<br>
+  IO.mapRequired("Attrs", Record.Attrs.Attrs);<br>
+  IO.mapRequired("BaseType", Record.BaseType);<br>
+  IO.mapRequired("VBPtrType", Record.VBPtrType);<br>
+  IO.mapRequired("VBPtrOffset", Record.VBPtrOffset);<br>
+  IO.mapRequired("VTableIndex", Record.VTableIndex);<br>
+}<br>
+<br>
+template <> void MemberRecordImpl<<wbr>ListContinuationRecord>::map(<wbr>IO &IO) {<br>
+  IO.mapRequired("<wbr>ContinuationIndex", Record.ContinuationIndex);<br>
+}<br>
+<br>
+template <typename T><br>
+static inline Expected<LeafRecord> fromCodeViewRecordImpl(CVType Type) {<br>
+  LeafRecord Result;<br>
+<br>
+  auto Impl = std::make_shared<<wbr>LeafRecordImpl<T>>(Type.kind()<wbr>);<br>
+  if (auto EC = Impl->fromCodeViewRecord(Type)<wbr>)<br>
+    return std::move(EC);<br>
+  Result.Leaf = Impl;<br>
+  return Result;<br>
+}<br>
+<br>
+Expected<LeafRecord> LeafRecord::<wbr>fromCodeViewRecord(CVType Type) {<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName)                              \<br>
+  case EnumName:                                                               \<br>
+    return fromCodeViewRecordImpl<<wbr>ClassName##Record>(Type);<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)             \<br>
+  TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+  switch (Type.kind()) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+  default: { llvm_unreachable("Unknown leaf kind!"); }<br>
+  }<br>
+  return make_error<CodeViewError>(cv_<wbr>error_code::corrupt_record);<br>
+}<br>
+<br>
+CVType LeafRecord::toCodeViewRecord(<wbr>BumpPtrAllocator &Allocator) const {<br>
+  return Leaf->toCodeViewRecord(<wbr>Allocator);<br>
+}<br>
+<br>
+template <> struct MappingTraits<LeafRecordBase> {<br>
+  static void mapping(IO &io, LeafRecordBase &Record) { Record.map(io); }<br>
+};<br>
+<br>
+template <typename ConcreteType><br>
+static void mapLeafRecordImpl(IO &IO, const char *Class, TypeLeafKind Kind,<br>
+                              LeafRecord &Obj) {<br>
+  if (!IO.outputting())<br>
+    Obj.Leaf = std::make_shared<<wbr>LeafRecordImpl<ConcreteType>>(<wbr>Kind);<br>
+<br>
+  if (Kind == LF_FIELDLIST)<br>
+    Obj.Leaf->map(IO);<br>
+  else<br>
+    IO.mapRequired(Class, *Obj.Leaf);<br>
+}<br>
+<br>
+void MappingTraits<LeafRecord>::<wbr>mapping(IO &IO, LeafRecord &Obj) {<br>
+  TypeLeafKind Kind;<br>
+  if (IO.outputting())<br>
+    Kind = Obj.Leaf->Kind;<br>
+  IO.mapRequired("Kind", Kind);<br>
+<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName)                              \<br>
+  case EnumName:                                                               \<br>
+    mapLeafRecordImpl<ClassName##<wbr>Record>(IO, #ClassName, Kind, Obj);           \<br>
+    break;<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)             \<br>
+  TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+  switch (Kind) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+  default: { llvm_unreachable("Unknown leaf kind!"); }<br>
+  }<br>
+}<br>
+<br>
+template <> struct MappingTraits<<wbr>MemberRecordBase> {<br>
+  static void mapping(IO &io, MemberRecordBase &Record) { Record.map(io); }<br>
+};<br>
+<br>
+template <typename ConcreteType><br>
+static void mapMemberRecordImpl(IO &IO, const char *Class, TypeLeafKind Kind,<br>
+                                MemberRecord &Obj) {<br>
+  if (!IO.outputting())<br>
+    Obj.Member = std::make_shared<<wbr>MemberRecordImpl<ConcreteType><wbr>>(Kind);<br>
+<br>
+  IO.mapRequired(Class, *Obj.Member);<br>
+}<br>
+<br>
+void MappingTraits<MemberRecord>::<wbr>mapping(IO &IO, MemberRecord &Obj) {<br>
+  TypeLeafKind Kind;<br>
+  if (IO.outputting())<br>
+    Kind = Obj.Member->Kind;<br>
+  IO.mapRequired("Kind", Kind);<br>
+<br>
+#define MEMBER_RECORD(EnumName, EnumVal, ClassName)                            \<br>
+  case EnumName:                                                               \<br>
+    mapMemberRecordImpl<ClassName#<wbr>#Record>(IO, #ClassName, Kind, Obj);         \<br>
+    break;<br>
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)           \<br>
+  MEMBER_RECORD(EnumName, EnumVal, ClassName)<br>
+#define TYPE_RECORD(EnumName, EnumVal, ClassName)<br>
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, AliasName, ClassName)<br>
+  switch (Kind) {<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
+  default: { llvm_unreachable("Unknown member kind!"); }<br>
+  }<br>
+}<br>
<br>
Modified: llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/LLVMBuild.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>ObjectYAML/LLVMBuild.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt (original)<br>
+++ llvm/trunk/lib/ObjectYAML/<wbr>LLVMBuild.txt Tue May 30 16:53:05 2017<br>
@@ -11,4 +11,4 @@<br>
 type = Library<br>
 name = ObjectYAML<br>
 parent = Libraries<br>
-required_libraries = Support<br>
+required_libraries = Support DebugInfoCodeView<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/Analyze.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/Analyze.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>Analyze.cpp Tue May 30 16:53:05 2017<br>
@@ -35,7 +35,7 @@ static StringRef getLeafTypeName(TypeLea<br>
 #define TYPE_RECORD(ename, value, name)                                        \<br>
   case ename:                                                                  \<br>
     return #name;<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
   default:<br>
     break;<br>
   }<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CMakeLists.txt?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/CMakeLists.txt?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>CMakeLists.txt Tue May 30 16:53:05 2017<br>
@@ -3,6 +3,7 @@ set(LLVM_LINK_COMPONENTS<br>
   DebugInfoMSF<br>
   DebugInfoPDB<br>
   Object<br>
+  ObjectYAML<br>
   Support<br>
   )<br>
<br>
@@ -12,8 +13,6 @@ add_llvm_tool(llvm-pdbdump<br>
   CompactTypeDumpVisitor.cpp<br>
   Diff.cpp<br>
   llvm-pdbdump.cpp<br>
-  YamlSymbolDumper.cpp<br>
-  YamlTypeDumper.cpp<br>
   LinePrinter.cpp<br>
   LLVMOutputStyle.cpp<br>
   PdbYaml.cpp<br>
@@ -29,6 +28,7 @@ add_llvm_tool(llvm-pdbdump<br>
   PrettyVariableDumper.cpp<br>
   StreamUtil.cpp<br>
   YAMLOutputStyle.cpp<br>
+  YamlSymbolDumper.cpp<br>
   )<br>
<br>
 if(LLVM_USE_SANITIZE_COVERAGE)<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/<wbr>CompactTypeDumpVisitor.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>CompactTypeDumpVisitor.cpp Tue May 30 16:53:05 2017<br>
@@ -18,7 +18,7 @@ using namespace llvm::pdb;<br>
<br>
 static const EnumEntry<TypeLeafKind> LeafTypeNames[] = {<br>
 #define CV_TYPE(enum, val) {#enum, enum},<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewTypes.def"<br>
 };<br>
<br>
 static StringRef getLeafName(TypeLeafKind K) {<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/PdbYaml.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.cpp Tue May 30 16:53:05 2017<br>
@@ -9,9 +9,7 @@<br>
<br>
 #include "PdbYaml.h"<br>
<br>
-#include "YamlSerializationContext.h"<br>
 #include "YamlSymbolDumper.h"<br>
-#include "YamlTypeDumper.h"<br>
<br>
 #include "llvm/ADT/StringExtras.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>CVSymbolVisitor.h"<br>
@@ -22,6 +20,7 @@<br>
 #include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h"<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>PDBFile.h"<br>
+#include "llvm/DebugInfo/PDB/Native/<wbr>RawTypes.h"<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h"<br>
 #include "llvm/DebugInfo/PDB/PDBExtras.<wbr>h"<br>
 #include "llvm/DebugInfo/PDB/PDBTypes.<wbr>h"<br>
@@ -35,15 +34,7 @@ LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(uint32<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::StringRef)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>NamedStreamMapping)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbDbiModuleInfo)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceFileChecksumEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceColumnEntry)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineBlock)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSourceLineInfo)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbInlineeSite)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbInlineeInfo)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbSymbolRecord)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::PdbTpiRecord)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>StreamBlockList)<br>
 LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(llvm::pdb::PdbRaw_<wbr>FeatureSig)<br>
<br>
@@ -152,57 +143,18 @@ template <> struct ScalarEnumerationTrai<br>
     io.enumCase(Features, "VC140", PdbRaw_FeatureSig::VC140);<br>
   }<br>
 };<br>
-<br>
-template <> struct ScalarEnumerationTraits<llvm::<wbr>codeview::FileChecksumKind> {<br>
-  static void enumeration(IO &io, llvm::codeview::<wbr>FileChecksumKind &Kind) {<br>
-    io.enumCase(Kind, "None", llvm::codeview::<wbr>FileChecksumKind::None);<br>
-    io.enumCase(Kind, "MD5", llvm::codeview::<wbr>FileChecksumKind::MD5);<br>
-    io.enumCase(Kind, "SHA1", llvm::codeview::<wbr>FileChecksumKind::SHA1);<br>
-    io.enumCase(Kind, "SHA256", llvm::codeview::<wbr>FileChecksumKind::SHA256);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<llvm::<wbr>codeview::LineFlags> {<br>
-  static void bitset(IO &io, llvm::codeview::LineFlags &Flags) {<br>
-    io.bitSetCase(Flags, "HasColumnInfo", llvm::codeview::LF_<wbr>HaveColumns);<br>
-    io.enumFallback<Hex16>(Flags);<br>
-  }<br>
-};<br>
-}<br>
 }<br>
-<br>
-void ScalarTraits<<wbr>HexFormattedString>::output(<wbr>const HexFormattedString &Value,<br>
-                                              void *ctx, raw_ostream &Out) {<br>
-  StringRef Bytes(reinterpret_cast<const char *>(Value.Bytes.data()),<br>
-                  Value.Bytes.size());<br>
-  Out << toHex(Bytes);<br>
-}<br>
-<br>
-StringRef ScalarTraits<<wbr>HexFormattedString>::input(<wbr>StringRef Scalar, void *ctxt,<br>
-                                                  HexFormattedString &Value) {<br>
-  std::string H = fromHex(Scalar);<br>
-  Value.Bytes.assign(H.begin(), H.end());<br>
-  return StringRef();<br>
 }<br>
<br>
 void MappingTraits<PdbObject>::<wbr>mapping(IO &IO, PdbObject &Obj) {<br>
-  // Create a single serialization context that will be passed through the<br>
-  // entire process of serializing / deserializing a Tpi Stream.  This is<br>
-  // especially important when we are going from Pdb -> Yaml because we need<br>
-  // to maintain state in a TypeTableBuilder across mappings, and at the end of<br>
-  // the entire process, we need to have one TypeTableBuilder that has every<br>
-  // record.<br>
-  pdb::yaml::<wbr>SerializationContext Context(IO, Obj.Allocator);<br>
-<br>
-<br>
   IO.mapOptional("MSF", Obj.Headers);<br>
   IO.mapOptional("StreamSizes", Obj.StreamSizes);<br>
   IO.mapOptional("StreamMap", Obj.StreamMap);<br>
   IO.mapOptional("StringTable", Obj.StringTable);<br>
   IO.mapOptional("PdbStream", Obj.PdbStream);<br>
-  IO.mapOptionalWithContext("<wbr>DbiStream", Obj.DbiStream, Context);<br>
-  IO.mapOptionalWithContext("<wbr>TpiStream", Obj.TpiStream, Context);<br>
-  IO.mapOptionalWithContext("<wbr>IpiStream", Obj.IpiStream, Context);<br>
+  IO.mapOptional("DbiStream", Obj.DbiStream);<br>
+  IO.mapOptional("TpiStream", Obj.TpiStream);<br>
+  IO.mapOptional("IpiStream", Obj.IpiStream);<br>
 }<br>
<br>
 void MappingTraits<MSFHeaders>::<wbr>mapping(IO &IO, MSFHeaders &Obj) {<br>
@@ -239,7 +191,7 @@ void MappingTraits<PdbInfoStream>::<wbr>mappi<br>
   IO.mapOptional("Version", Obj.Version, PdbImplVC70);<br>
 }<br>
<br>
-void MappingContextTraits<<wbr>PdbDbiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbDbiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbDbiStream>::<wbr>mapping(IO &IO, PdbDbiStream &Obj) {<br>
   IO.mapOptional("VerHeader", Obj.VerHeader, PdbDbiV70);<br>
   IO.mapOptional("Age", Obj.Age, 1U);<br>
   IO.mapOptional("BuildNumber", Obj.BuildNumber, uint16_t(0U));<br>
@@ -247,13 +199,13 @@ void MappingContextTraits<<wbr>PdbDbiStream,<br>
   IO.mapOptional("PdbDllRbld", Obj.PdbDllRbld, uint16_t(0U));<br>
   IO.mapOptional("Flags", Obj.Flags, uint16_t(1U));<br>
   IO.mapOptional("MachineType", Obj.MachineType, PDB_Machine::x86);<br>
-  IO.mapOptionalWithContext("<wbr>Modules", Obj.ModInfos, Context);<br>
+  IO.mapOptional("Modules", Obj.ModInfos);<br>
 }<br>
<br>
-void MappingContextTraits<<wbr>PdbTpiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(<br>
-    IO &IO, pdb::yaml::PdbTpiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbTpiStream>::<wbr>mapping(IO &IO,<br>
+                                          pdb::yaml::PdbTpiStream &Obj) {<br>
   IO.mapOptional("Version", Obj.Version, PdbTpiV80);<br>
-  IO.mapRequired("Records", Obj.Records, Context);<br>
+  IO.mapRequired("Records", Obj.Records);<br>
 }<br>
<br>
 void MappingTraits<<wbr>NamedStreamMapping>::mapping(<wbr>IO &IO,<br>
@@ -262,9 +214,11 @@ void MappingTraits<<wbr>NamedStreamMapping>::<br>
   IO.mapRequired("StreamNum", Obj.StreamNumber);<br>
 }<br>
<br>
-void MappingContextTraits<<wbr>PdbSymbolRecord, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbSymbolRecord &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbSymbolRecord><wbr>::mapping(IO &IO, PdbSymbolRecord &Obj) {<br>
+  BumpPtrAllocator *Alloc =<br>
+      reinterpret_cast<<wbr>BumpPtrAllocator *>(IO.getContext());<br>
   codeview::<wbr>SymbolVisitorCallbackPipeline Pipeline;<br>
-  codeview::SymbolSerializer Serializer(Context.Allocator);<br>
+  codeview::SymbolSerializer Serializer(*Alloc);<br>
   codeview::SymbolDeserializer Deserializer(nullptr);<br>
   codeview::yaml::<wbr>YamlSymbolDumper Dumper(IO);<br>
<br>
@@ -283,113 +237,15 @@ void MappingContextTraits<<wbr>PdbSymbolRecor<br>
   consumeError(Visitor.<wbr>visitSymbolRecord(Obj.Record))<wbr>;<br>
 }<br>
<br>
-void MappingContextTraits<<wbr>PdbModiStream, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbModiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<PdbModiStream>::<wbr>mapping(IO &IO, PdbModiStream &Obj) {<br>
   IO.mapOptional("Signature", Obj.Signature, 4U);<br>
-  IO.mapRequired("Records", Obj.Symbols, Context);<br>
+  IO.mapRequired("Records", Obj.Symbols);<br>
 }<br>
<br>
-void MappingContextTraits<<wbr>PdbDbiModuleInfo, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(IO &IO, PdbDbiModuleInfo &Obj, pdb::yaml::<wbr>SerializationContext &Context) {<br>
+void MappingTraits<<wbr>PdbDbiModuleInfo>::mapping(IO &IO, PdbDbiModuleInfo &Obj) {<br>
   IO.mapRequired("Module", Obj.Mod);<br>
   IO.mapOptional("ObjFile", Obj.Obj, Obj.Mod);<br>
   IO.mapOptional("SourceFiles", Obj.SourceFiles);<br>
-  IO.mapOptionalWithContext("<wbr>LineInfo", Obj.FileLineInfo, Context);<br>
-  IO.mapOptionalWithContext("<wbr>Modi", Obj.Modi, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineEntry,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceLineEntry &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapRequired("Offset", Obj.Offset);<br>
-  IO.mapRequired("LineStart", Obj.LineStart);<br>
-  IO.mapRequired("IsStatement", Obj.IsStatement);<br>
-  IO.mapRequired("EndDelta", Obj.EndDelta);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceColumnEntry,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceColumnEntry &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapRequired("StartColumn", Obj.StartColumn);<br>
-  IO.mapRequired("EndColumn", Obj.EndColumn);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineBlock,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceLineBlock &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapRequired("FileName", Obj.FileName);<br>
-  IO.mapRequired("Lines", Obj.Lines, Context);<br>
-  IO.mapRequired("Columns", Obj.Columns, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::<wbr>PdbSourceFileChecksumEntry,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceFileChecksumEntry &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapRequired("FileName", Obj.FileName);<br>
-  IO.mapRequired("Kind", Obj.Kind);<br>
-  IO.mapRequired("Checksum", Obj.ChecksumBytes);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineInfo,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceLineInfo &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapRequired("CodeSize", Obj.CodeSize);<br>
-<br>
-  IO.mapRequired("Flags", Obj.Flags);<br>
-  IO.mapRequired("RelocOffset", Obj.RelocOffset);<br>
-  IO.mapRequired("RelocSegment", Obj.RelocSegment);<br>
-  IO.mapRequired("Blocks", Obj.Blocks, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<pdb::<wbr>yaml::PdbSourceFileInfo,<br>
-                          pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, PdbSourceFileInfo &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  IO.mapOptionalWithContext("<wbr>Checksums", Obj.FileChecksums, Context);<br>
-  IO.mapOptionalWithContext("<wbr>Lines", Obj.LineFragments, Context);<br>
-  IO.mapOptionalWithContext("<wbr>InlineeLines", Obj.Inlinees, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbInlineeSite, SerializationContext>::<wbr>mapping(<br>
-    IO &IO, PdbInlineeSite &Obj, SerializationContext &Context) {<br>
-  IO.mapRequired("FileName", Obj.FileName);<br>
-  IO.mapRequired("LineNum", Obj.SourceLineNum);<br>
-  IO.mapRequired("Inlinee", Obj.Inlinee);<br>
-  IO.mapOptional("ExtraFiles", Obj.ExtraFiles);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbInlineeInfo, SerializationContext>::<wbr>mapping(<br>
-    IO &IO, PdbInlineeInfo &Obj, SerializationContext &Context) {<br>
-  IO.mapRequired("HasExtraFiles"<wbr>, Obj.HasExtraFiles);<br>
-  IO.mapRequired("Sites", Obj.Sites, Context);<br>
-}<br>
-<br>
-void MappingContextTraits<<wbr>PdbTpiRecord, pdb::yaml::<wbr>SerializationContext>::<br>
-    mapping(IO &IO, pdb::yaml::PdbTpiRecord &Obj,<br>
-            pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  if (IO.outputting()) {<br>
-    // For PDB to Yaml, deserialize into a high level record type, then dump it.<br>
-    consumeError(codeview::<wbr>visitTypeRecord(Obj.Record, Context.Dumper));<br>
-  } else {<br>
-    codeview::<wbr>TypeVisitorCallbackPipeline Pipeline;<br>
-    codeview::TypeSerializer Serializer(Context.Allocator);<br>
-    pdb::TpiHashUpdater Hasher;<br>
-    // For Yaml to PDB, extract from the high level record type, then write it<br>
-    // to bytes.<br>
-<br>
-    // This might be interpreted as a hack, but serializing FieldList<br>
-    // sub-records requires having access to the same serializer being used by<br>
-    // the FieldList itself.<br>
-    Context.ActiveSerializer = &Serializer;<br>
-    Pipeline.<wbr>addCallbackToPipeline(Context.<wbr>Dumper);<br>
-    Pipeline.<wbr>addCallbackToPipeline(<wbr>Serializer);<br>
-    Pipeline.<wbr>addCallbackToPipeline(Hasher);<br>
-    consumeError(codeview::<wbr>visitTypeRecord(Obj.Record, Pipeline,<br>
-                                           codeview::VDS_BytesExternal));<br>
-  }<br>
-<br>
-  Context.ActiveSerializer = nullptr;<br>
+  IO.mapOptional("LineInfo", Obj.FileLineInfo);<br>
+  IO.mapOptional("Modi", Obj.Modi);<br>
 }<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/PdbYaml.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/PdbYaml.h?rev=304248&<wbr>r1=304247&r2=304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>PdbYaml.h Tue May 30 16:53:05 2017<br>
@@ -19,6 +19,7 @@<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>PDBFile.h"<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h"<br>
 #include "llvm/DebugInfo/PDB/PDBTypes.<wbr>h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
 #include "llvm/Support/Endian.h"<br>
 #include "llvm/Support/YAMLTraits.h"<br>
<br>
@@ -65,66 +66,11 @@ struct PdbModiStream {<br>
   std::vector<PdbSymbolRecord> Symbols;<br>
 };<br>
<br>
-struct PdbSourceLineEntry {<br>
-  uint32_t Offset;<br>
-  uint32_t LineStart;<br>
-  uint32_t EndDelta;<br>
-  bool IsStatement;<br>
-};<br>
-<br>
-struct PdbSourceColumnEntry {<br>
-  uint16_t StartColumn;<br>
-  uint16_t EndColumn;<br>
-};<br>
-<br>
-struct PdbSourceLineBlock {<br>
-  StringRef FileName;<br>
-  std::vector<<wbr>PdbSourceLineEntry> Lines;<br>
-  std::vector<<wbr>PdbSourceColumnEntry> Columns;<br>
-};<br>
-<br>
-struct HexFormattedString {<br>
-  std::vector<uint8_t> Bytes;<br>
-};<br>
-<br>
-struct PdbSourceFileChecksumEntry {<br>
-  StringRef FileName;<br>
-  codeview::FileChecksumKind Kind;<br>
-  HexFormattedString ChecksumBytes;<br>
-};<br>
-<br>
-struct PdbSourceLineInfo {<br>
-  uint32_t RelocOffset;<br>
-  uint32_t RelocSegment;<br>
-  codeview::LineFlags Flags;<br>
-  uint32_t CodeSize;<br>
-<br>
-  std::vector<<wbr>PdbSourceLineBlock> Blocks;<br>
-};<br>
-<br>
-struct PdbInlineeSite {<br>
-  codeview::TypeIndex Inlinee;<br>
-  StringRef FileName;<br>
-  uint32_t SourceLineNum;<br>
-  std::vector<StringRef> ExtraFiles;<br>
-};<br>
-<br>
-struct PdbInlineeInfo {<br>
-  bool HasExtraFiles;<br>
-  std::vector<PdbInlineeSite> Sites;<br>
-};<br>
-<br>
-struct PdbSourceFileInfo {<br>
-  std::vector<<wbr>PdbSourceFileChecksumEntry> FileChecksums;<br>
-  std::vector<PdbSourceLineInfo> LineFragments;<br>
-  std::vector<PdbInlineeInfo> Inlinees;<br>
-};<br>
-<br>
 struct PdbDbiModuleInfo {<br>
   StringRef Obj;<br>
   StringRef Mod;<br>
   std::vector<StringRef> SourceFiles;<br>
-  Optional<PdbSourceFileInfo> FileLineInfo;<br>
+  Optional<CodeViewYAML::<wbr>SourceFileInfo> FileLineInfo;<br>
   Optional<PdbModiStream> Modi;<br>
 };<br>
<br>
@@ -140,17 +86,9 @@ struct PdbDbiStream {<br>
   std::vector<PdbDbiModuleInfo> ModInfos;<br>
 };<br>
<br>
-struct PdbTpiRecord {<br>
-  codeview::CVType Record;<br>
-};<br>
-<br>
-struct PdbTpiFieldListRecord {<br>
-  codeview::CVMemberRecord Record;<br>
-};<br>
-<br>
 struct PdbTpiStream {<br>
   PdbRaw_TpiVer Version = PdbTpiV80;<br>
-  std::vector<PdbTpiRecord> Records;<br>
+  std::vector<CodeViewYAML::<wbr>LeafRecord> Records;<br>
 };<br>
<br>
 struct PdbObject {<br>
@@ -172,126 +110,16 @@ struct PdbObject {<br>
 }<br>
 }<br>
<br>
-namespace llvm {<br>
-namespace yaml {<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>PdbObject> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbObject &Obj);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>MSFHeaders> {<br>
-  static void mapping(IO &IO, pdb::yaml::MSFHeaders &Obj);<br>
-};<br>
-<br>
-template <> struct MappingTraits<msf::SuperBlock> {<br>
-  static void mapping(IO &IO, msf::SuperBlock &SB);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>StreamBlockList> {<br>
-  static void mapping(IO &IO, pdb::yaml::StreamBlockList &SB);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>PdbInfoStream> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbInfoStream &Obj);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbDbiStream, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbDbiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiStream, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbTpiStream &Obj,<br>
-    pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingTraits<pdb::yaml::<wbr>NamedStreamMapping> {<br>
-  static void mapping(IO &IO, pdb::yaml::NamedStreamMapping &Obj);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbSymbolRecord, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbSymbolRecord &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbModiStream, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbModiStream &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct MappingContextTraits<pdb::<wbr>yaml::PdbDbiModuleInfo, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbDbiModuleInfo &Obj, pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineEntry,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbSourceLineEntry &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceColumnEntry,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::<wbr>PdbSourceColumnEntry &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineBlock,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbSourceLineBlock &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::<wbr>PdbSourceFileChecksumEntry,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::<wbr>PdbSourceFileChecksumEntry &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct ScalarTraits<pdb::yaml::<wbr>HexFormattedString> {<br>
-  static void output(const pdb::yaml::HexFormattedString &Value, void *ctx,<br>
-                     llvm::raw_ostream &Out);<br>
-  static StringRef input(StringRef Scalar, void *ctxt,<br>
-                         pdb::yaml::HexFormattedString &Value);<br>
-  static bool mustQuote(StringRef) { return false; }<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceLineInfo,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbSourceLineInfo &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbSourceFileInfo,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbSourceFileInfo &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbInlineeInfo,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbInlineeInfo &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbInlineeSite,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbInlineeSite &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiRecord,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::PdbTpiRecord &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-}<br>
-}<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::PdbObject)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::MSFHeaders)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(msf::SuperBlock)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>StreamBlockList)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbInfoStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbDbiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbTpiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>NamedStreamMapping)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbSymbolRecord)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbModiStream)<br>
+LLVM_YAML_DECLARE_MAPPING_<wbr>TRAITS(pdb::yaml::<wbr>PdbDbiModuleInfo)<br>
<br>
 #endif // LLVM_TOOLS_LLVMPDBDUMP_<wbr>PDBYAML_H<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YAMLOutputStyle.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.cpp Tue May 30 16:53:05 2017<br>
@@ -28,6 +28,7 @@<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>RawConstants.h"<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>RawError.h"<br>
 #include "llvm/DebugInfo/PDB/Native/<wbr>TpiStream.h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
<br>
 using namespace llvm;<br>
 using namespace llvm::codeview;<br>
@@ -104,12 +105,12 @@ Error YAMLOutputStyle::dump() {<br>
 namespace {<br>
 class C13YamlVisitor : public C13DebugFragmentVisitor {<br>
 public:<br>
-  C13YamlVisitor(llvm::pdb::<wbr>yaml::PdbSourceFileInfo &Info, PDBFile &F)<br>
+  C13YamlVisitor(CodeViewYAML::<wbr>SourceFileInfo &Info, PDBFile &F)<br>
       : C13DebugFragmentVisitor(F), Info(Info) {}<br>
<br>
   Error handleFileChecksums() override {<br>
     for (const auto &C : *Checksums) {<br>
-      llvm::pdb::yaml::<wbr>PdbSourceFileChecksumEntry Entry;<br>
+      CodeViewYAML::<wbr>SourceFileChecksumEntry Entry;<br>
       if (auto Result = getNameFromStringTable(C.<wbr>FileNameOffset))<br>
         Entry.FileName = *Result;<br>
       else<br>
@@ -143,7 +144,7 @@ public:<br>
           return Result.takeError();<br>
<br>
         for (const auto &N : L.LineNumbers) {<br>
-          llvm::pdb::yaml::<wbr>PdbSourceLineEntry Line;<br>
+          CodeViewYAML::SourceLineEntry Line;<br>
           Line.Offset = N.Offset;<br>
           codeview::LineInfo LI(N.Flags);<br>
           Line.LineStart = LI.getStartLine();<br>
@@ -154,7 +155,7 @@ public:<br>
<br>
         if (LF.hasColumnInfo()) {<br>
           for (const auto &C : L.Columns) {<br>
-            llvm::pdb::yaml::<wbr>PdbSourceColumnEntry Column;<br>
+            CodeViewYAML::<wbr>SourceColumnEntry Column;<br>
             Column.StartColumn = C.StartColumn;<br>
             Column.EndColumn = C.EndColumn;<br>
             Block.Columns.push_back(<wbr>Column);<br>
@@ -179,7 +180,7 @@ public:<br>
         else<br>
           return Result.takeError();<br>
<br>
-        Site.Inlinee = IL.Header->Inlinee;<br>
+        Site.Inlinee = IL.Header->Inlinee.getIndex();<br>
         Site.SourceLineNum = IL.Header->SourceLineNum;<br>
         if (ILF.hasExtraFiles()) {<br>
           for (const auto &EF : IL.ExtraFiles) {<br>
@@ -195,17 +196,16 @@ public:<br>
   }<br>
<br>
 private:<br>
-<br>
-  llvm::pdb::yaml::<wbr>PdbSourceFileInfo &Info;<br>
+  CodeViewYAML::SourceFileInfo &Info;<br>
 };<br>
 }<br>
<br>
-Expected<Optional<llvm::pdb::<wbr>yaml::PdbSourceFileInfo>><br>
+Expected<Optional<<wbr>CodeViewYAML::SourceFileInfo>><br>
 YAMLOutputStyle::<wbr>getFileLineInfo(const pdb::ModuleDebugStreamRef &ModS) {<br>
   if (!ModS.hasLineInfo())<br>
     return None;<br>
<br>
-  yaml::PdbSourceFileInfo Info;<br>
+  CodeViewYAML::SourceFileInfo Info;<br>
   C13YamlVisitor Visitor(Info, File);<br>
   if (auto EC =<br>
           codeview::<wbr>visitDebugSubsections(ModS.<wbr>linesAndChecksums(), Visitor))<br>
@@ -378,13 +378,10 @@ Error YAMLOutputStyle::<wbr>dumpTpiStream() {<br>
   Obj.TpiStream.emplace();<br>
   Obj.TpiStream->Version = TS.getTpiVersion();<br>
   for (auto &Record : TS.types(nullptr)) {<br>
-    yaml::PdbTpiRecord R;<br>
-    // It's not necessary to set R.RecordData here.  That only exists as a<br>
-    // way to have the `PdbTpiRecord` structure own the memory that `R.Record`<br>
-    // references.  In the case of reading an existing PDB though, that memory<br>
-    // is owned by the backing stream.<br>
-    R.Record = Record;<br>
-    Obj.TpiStream->Records.push_<wbr>back(R);<br>
+    auto ExpectedRecord = CodeViewYAML::LeafRecord::<wbr>fromCodeViewRecord(Record);<br>
+    if (!ExpectedRecord)<br>
+      return ExpectedRecord.takeError();<br>
+    Obj.TpiStream->Records.push_<wbr>back(*ExpectedRecord);<br>
   }<br>
<br>
   return Error::success();<br>
@@ -402,9 +399,11 @@ Error YAMLOutputStyle::<wbr>dumpIpiStream() {<br>
   Obj.IpiStream.emplace();<br>
   Obj.IpiStream->Version = IS.getTpiVersion();<br>
   for (auto &Record : IS.types(nullptr)) {<br>
-    yaml::PdbTpiRecord R;<br>
-    R.Record = Record;<br>
-    Obj.IpiStream->Records.push_<wbr>back(R);<br>
+    auto ExpectedRecord = CodeViewYAML::LeafRecord::<wbr>fromCodeViewRecord(Record);<br>
+    if (!ExpectedRecord)<br>
+      return ExpectedRecord.takeError();<br>
+<br>
+    Obj.IpiStream->Records.push_<wbr>back(*ExpectedRecord);<br>
   }<br>
<br>
   return Error::success();<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YAMLOutputStyle.h?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YAMLOutputStyle.h Tue May 30 16:53:05 2017<br>
@@ -27,7 +27,7 @@ public:<br>
   Error dump() override;<br>
<br>
 private:<br>
-  Expected<Optional<llvm::pdb::<wbr>yaml::PdbSourceFileInfo>><br>
+  Expected<Optional<<wbr>CodeViewYAML::SourceFileInfo>><br>
   getFileLineInfo(const pdb::ModuleDebugStreamRef &ModS);<br>
<br>
   Error dumpStringTable();<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSerializationContext.h?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/<wbr>YamlSerializationContext.h?<wbr>rev=304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSerializationContext.h (removed)<br>
@@ -1,39 +0,0 @@<br>
-//===- YamlSerializationContext.h ----------------------------- *- C++ --*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLSERIALIZATIONCONTEXT_H<br>
-#define LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLSERIALIZATIONCONTEXT_H<br>
-<br>
-#include "PdbYaml.h"<br>
-#include "YamlTypeDumper.h"<br>
-#include "llvm/Support/Allocator.h"<br>
-<br>
-namespace llvm {<br>
-namespace codeview {<br>
-class TypeSerializer;<br>
-}<br>
-namespace yaml {<br>
-class IO;<br>
-}<br>
-<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext {<br>
-  explicit SerializationContext(llvm::<wbr>yaml::IO &IO, BumpPtrAllocator &Allocator)<br>
-      : Dumper(IO, *this), Allocator(Allocator) {}<br>
-<br>
-  codeview::yaml::<wbr>YamlTypeDumperCallbacks Dumper;<br>
-  BumpPtrAllocator &Allocator;<br>
-  codeview::TypeSerializer *ActiveSerializer = nullptr;<br>
-};<br>
-}<br>
-}<br>
-}<br>
-<br>
-#endif<br>
\ No newline at end of file<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlSymbolDumper.cpp?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.cpp Tue May 30 16:53:05 2017<br>
@@ -9,7 +9,6 @@<br>
<br>
 #include "YamlSymbolDumper.h"<br>
 #include "PdbYaml.h"<br>
-#include "YamlTypeDumper.h"<br>
<br>
 #include "llvm/DebugInfo/CodeView/<wbr>CVSymbolVisitor.h"<br>
 #include "llvm/DebugInfo/CodeView/<wbr>EnumTables.h"<br>
@@ -27,10 +26,10 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRe<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
 LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CVType)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord)<br>
<br>
 namespace llvm {<br>
 namespace yaml {<br>
+<br>
 void ScalarEnumerationTraits<<wbr>SymbolKind>::enumeration(IO &io,<br>
                                                       SymbolKind &Value) {<br>
   auto SymbolNames = getSymbolTypeNames();<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.h?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlSymbolDumper.h?<wbr>rev=304248&r1=304247&r2=<wbr>304248&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlSymbolDumper.h Tue May 30 16:53:05 2017<br>
@@ -34,7 +34,7 @@ public:<br>
     return Error::success();                                                   \<br>
   }<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
<br>
 private:<br>
   template <typename T><br>
@@ -59,7 +59,7 @@ template <> struct ScalarEnumerationTrai<br>
     static void mapping(IO &IO, codeview::Name &Obj);                          \<br>
   };<br>
 #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVSymbolTypes.def"<br>
+#include "llvm/DebugInfo/CodeView/<wbr>CodeViewSymbols.def"<br>
 }<br>
 }<br>
<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.cpp?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlTypeDumper.cpp?<wbr>rev=304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.cpp (removed)<br>
@@ -1,589 +0,0 @@<br>
-//===- YamlTypeDumper.cpp ------------------------------<wbr>------- *- C++ --*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#include "YamlTypeDumper.h"<br>
-#include "PdbYaml.h"<br>
-#include "YamlSerializationContext.h"<br>
-<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CVTypeVisitor.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>EnumTables.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecord.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeSerializer.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbackPipeline.h"<br>
-#include "llvm/DebugInfo/PDB/Native/<wbr>TpiHashing.h"<br>
-<br>
-using namespace llvm;<br>
-using namespace llvm::codeview;<br>
-using namespace llvm::codeview::yaml;<br>
-<br>
-LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(TypeIndex)<br>
-LLVM_YAML_IS_FLOW_SEQUENCE_<wbr>VECTOR(uint64_t)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>OneMethodRecord)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>VFTableSlotKind)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>StringRef)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>CVType)<br>
-LLVM_YAML_IS_SEQUENCE_VECTOR(<wbr>llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord)<br>
-<br>
-namespace {<br>
-struct FieldListRecordSplitter : public TypeVisitorCallbacks {<br>
-public:<br>
-  explicit FieldListRecordSplitter(<br>
-      std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> &Records)<br>
-      : Records(Records) {}<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name)<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \<br>
-  Error visitKnownMember(<wbr>CVMemberRecord &CVT, Name##Record &Record) override { \<br>
-    visitKnownMemberImpl(CVT);                                                 \<br>
-    return Error::success();                                                   \<br>
-  }<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-<br>
-private:<br>
-  void visitKnownMemberImpl(<wbr>CVMemberRecord &CVT) {<br>
-    llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord R;<br>
-    R.Record = CVT;<br>
-    Records.push_back(std::move(R)<wbr>);<br>
-  }<br>
-<br>
-  std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> &Records;<br>
-};<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerToMemberRepresentation> {<br>
-  static void enumeration(IO &IO, PointerToMemberRepresentation &Value) {<br>
-    IO.enumCase(Value, "Unknown", PointerToMemberRepresentation:<wbr>:Unknown);<br>
-    IO.enumCase(Value, "SingleInheritanceData",<br>
-                PointerToMemberRepresentation:<wbr>:SingleInheritanceData);<br>
-    IO.enumCase(Value, "MultipleInheritanceData",<br>
-                PointerToMemberRepresentation:<wbr>:MultipleInheritanceData);<br>
-    IO.enumCase(Value, "VirtualInheritanceData",<br>
-                PointerToMemberRepresentation:<wbr>:VirtualInheritanceData);<br>
-    IO.enumCase(Value, "GeneralData",<br>
-                PointerToMemberRepresentation:<wbr>:GeneralData);<br>
-    IO.enumCase(Value, "SingleInheritanceFunction",<br>
-                PointerToMemberRepresentation:<wbr>:SingleInheritanceFunction);<br>
-    IO.enumCase(Value, "MultipleInheritanceFunction",<br>
-                PointerToMemberRepresentation:<wbr>:MultipleInheritanceFunction);<br>
-    IO.enumCase(Value, "VirtualInheritanceFunction",<br>
-                PointerToMemberRepresentation:<wbr>:VirtualInheritanceFunction);<br>
-    IO.enumCase(Value, "GeneralFunction",<br>
-                PointerToMemberRepresentation:<wbr>:GeneralFunction);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>VFTableSlotKind> {<br>
-  static void enumeration(IO &IO, VFTableSlotKind &Kind) {<br>
-    IO.enumCase(Kind, "Near16", VFTableSlotKind::Near16);<br>
-    IO.enumCase(Kind, "Far16", VFTableSlotKind::Far16);<br>
-    IO.enumCase(Kind, "This", VFTableSlotKind::This);<br>
-    IO.enumCase(Kind, "Outer", VFTableSlotKind::Outer);<br>
-    IO.enumCase(Kind, "Meta", VFTableSlotKind::Meta);<br>
-    IO.enumCase(Kind, "Near", VFTableSlotKind::Near);<br>
-    IO.enumCase(Kind, "Far", VFTableSlotKind::Far);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>CallingConvention> {<br>
-  static void enumeration(IO &IO, CallingConvention &Value) {<br>
-    IO.enumCase(Value, "NearC", CallingConvention::NearC);<br>
-    IO.enumCase(Value, "FarC", CallingConvention::FarC);<br>
-    IO.enumCase(Value, "NearPascal", CallingConvention::NearPascal)<wbr>;<br>
-    IO.enumCase(Value, "FarPascal", CallingConvention::FarPascal);<br>
-    IO.enumCase(Value, "NearFast", CallingConvention::NearFast);<br>
-    IO.enumCase(Value, "FarFast", CallingConvention::FarFast);<br>
-    IO.enumCase(Value, "NearStdCall", CallingConvention::<wbr>NearStdCall);<br>
-    IO.enumCase(Value, "FarStdCall", CallingConvention::FarStdCall)<wbr>;<br>
-    IO.enumCase(Value, "NearSysCall", CallingConvention::<wbr>NearSysCall);<br>
-    IO.enumCase(Value, "FarSysCall", CallingConvention::FarSysCall)<wbr>;<br>
-    IO.enumCase(Value, "ThisCall", CallingConvention::ThisCall);<br>
-    IO.enumCase(Value, "MipsCall", CallingConvention::MipsCall);<br>
-    IO.enumCase(Value, "Generic", CallingConvention::Generic);<br>
-    IO.enumCase(Value, "AlphaCall", CallingConvention::AlphaCall);<br>
-    IO.enumCase(Value, "PpcCall", CallingConvention::PpcCall);<br>
-    IO.enumCase(Value, "SHCall", CallingConvention::SHCall);<br>
-    IO.enumCase(Value, "ArmCall", CallingConvention::ArmCall);<br>
-    IO.enumCase(Value, "AM33Call", CallingConvention::AM33Call);<br>
-    IO.enumCase(Value, "TriCall", CallingConvention::TriCall);<br>
-    IO.enumCase(Value, "SH5Call", CallingConvention::SH5Call);<br>
-    IO.enumCase(Value, "M32RCall", CallingConvention::M32RCall);<br>
-    IO.enumCase(Value, "ClrCall", CallingConvention::ClrCall);<br>
-    IO.enumCase(Value, "Inline", CallingConvention::Inline);<br>
-    IO.enumCase(Value, "NearVector", CallingConvention::NearVector)<wbr>;<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerKind> {<br>
-  static void enumeration(IO &IO, PointerKind &Kind) {<br>
-    IO.enumCase(Kind, "Near16", PointerKind::Near16);<br>
-    IO.enumCase(Kind, "Far16", PointerKind::Far16);<br>
-    IO.enumCase(Kind, "Huge16", PointerKind::Huge16);<br>
-    IO.enumCase(Kind, "BasedOnSegment", PointerKind::BasedOnSegment);<br>
-    IO.enumCase(Kind, "BasedOnValue", PointerKind::BasedOnValue);<br>
-    IO.enumCase(Kind, "BasedOnSegmentValue", PointerKind::<wbr>BasedOnSegmentValue);<br>
-    IO.enumCase(Kind, "BasedOnAddress", PointerKind::BasedOnAddress);<br>
-    IO.enumCase(Kind, "BasedOnSegmentAddress",<br>
-                PointerKind::<wbr>BasedOnSegmentAddress);<br>
-    IO.enumCase(Kind, "BasedOnType", PointerKind::BasedOnType);<br>
-    IO.enumCase(Kind, "BasedOnSelf", PointerKind::BasedOnSelf);<br>
-    IO.enumCase(Kind, "Near32", PointerKind::Near32);<br>
-    IO.enumCase(Kind, "Far32", PointerKind::Far32);<br>
-    IO.enumCase(Kind, "Near64", PointerKind::Near64);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>PointerMode> {<br>
-  static void enumeration(IO &IO, PointerMode &Mode) {<br>
-    IO.enumCase(Mode, "Pointer", PointerMode::Pointer);<br>
-    IO.enumCase(Mode, "LValueReference", PointerMode::LValueReference);<br>
-    IO.enumCase(Mode, "PointerToDataMember", PointerMode::<wbr>PointerToDataMember);<br>
-    IO.enumCase(Mode, "PointerToMemberFunction",<br>
-                PointerMode::<wbr>PointerToMemberFunction);<br>
-    IO.enumCase(Mode, "RValueReference", PointerMode::RValueReference);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>HfaKind> {<br>
-  static void enumeration(IO &IO, HfaKind &Value) {<br>
-    IO.enumCase(Value, "None", HfaKind::None);<br>
-    IO.enumCase(Value, "Float", HfaKind::Float);<br>
-    IO.enumCase(Value, "Double", HfaKind::Double);<br>
-    IO.enumCase(Value, "Other", HfaKind::Other);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>MemberAccess> {<br>
-  static void enumeration(IO &IO, MemberAccess &Access) {<br>
-    IO.enumCase(Access, "None", MemberAccess::None);<br>
-    IO.enumCase(Access, "Private", MemberAccess::Private);<br>
-    IO.enumCase(Access, "Protected", MemberAccess::Protected);<br>
-    IO.enumCase(Access, "Public", MemberAccess::Public);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>MethodKind> {<br>
-  static void enumeration(IO &IO, MethodKind &Kind) {<br>
-    IO.enumCase(Kind, "Vanilla", MethodKind::Vanilla);<br>
-    IO.enumCase(Kind, "Virtual", MethodKind::Virtual);<br>
-    IO.enumCase(Kind, "Static", MethodKind::Static);<br>
-    IO.enumCase(Kind, "Friend", MethodKind::Friend);<br>
-    IO.enumCase(Kind, "IntroducingVirtual", MethodKind::<wbr>IntroducingVirtual);<br>
-    IO.enumCase(Kind, "PureVirtual", MethodKind::PureVirtual);<br>
-    IO.enumCase(Kind, "PureIntroducingVirtual",<br>
-                MethodKind::<wbr>PureIntroducingVirtual);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>WindowsRTClassKind> {<br>
-  static void enumeration(IO &IO, WindowsRTClassKind &Value) {<br>
-    IO.enumCase(Value, "None", WindowsRTClassKind::None);<br>
-    IO.enumCase(Value, "Ref", WindowsRTClassKind::RefClass);<br>
-    IO.enumCase(Value, "Value", WindowsRTClassKind::<wbr>ValueClass);<br>
-    IO.enumCase(Value, "Interface", WindowsRTClassKind::Interface)<wbr>;<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>LabelType> {<br>
-  static void enumeration(IO &IO, LabelType &Value) {<br>
-    IO.enumCase(Value, "Near", LabelType::Near);<br>
-    IO.enumCase(Value, "Far", LabelType::Far);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>PointerOptions> {<br>
-  static void bitset(IO &IO, PointerOptions &Options) {<br>
-    IO.bitSetCase(Options, "None", PointerOptions::None);<br>
-    IO.bitSetCase(Options, "Flat32", PointerOptions::Flat32);<br>
-    IO.bitSetCase(Options, "Volatile", PointerOptions::Volatile);<br>
-    IO.bitSetCase(Options, "Const", PointerOptions::Const);<br>
-    IO.bitSetCase(Options, "Unaligned", PointerOptions::Unaligned);<br>
-    IO.bitSetCase(Options, "Restrict", PointerOptions::Restrict);<br>
-    IO.bitSetCase(Options, "WinRTSmartPointer",<br>
-                  PointerOptions::<wbr>WinRTSmartPointer);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>ModifierOptions> {<br>
-  static void bitset(IO &IO, ModifierOptions &Options) {<br>
-    IO.bitSetCase(Options, "None", ModifierOptions::None);<br>
-    IO.bitSetCase(Options, "Const", ModifierOptions::Const);<br>
-    IO.bitSetCase(Options, "Volatile", ModifierOptions::Volatile);<br>
-    IO.bitSetCase(Options, "Unaligned", ModifierOptions::Unaligned);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>FunctionOptions> {<br>
-  static void bitset(IO &IO, FunctionOptions &Options) {<br>
-    IO.bitSetCase(Options, "None", FunctionOptions::None);<br>
-    IO.bitSetCase(Options, "CxxReturnUdt", FunctionOptions::CxxReturnUdt)<wbr>;<br>
-    IO.bitSetCase(Options, "Constructor", FunctionOptions::Constructor);<br>
-    IO.bitSetCase(Options, "ConstructorWithVirtualBases",<br>
-                  FunctionOptions::<wbr>ConstructorWithVirtualBases);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>ClassOptions> {<br>
-  static void bitset(IO &IO, ClassOptions &Options) {<br>
-    IO.bitSetCase(Options, "None", ClassOptions::None);<br>
-    IO.bitSetCase(Options, "HasConstructorOrDestructor",<br>
-                  ClassOptions::<wbr>HasConstructorOrDestructor);<br>
-    IO.bitSetCase(Options, "HasOverloadedOperator",<br>
-                  ClassOptions::<wbr>HasOverloadedOperator);<br>
-    IO.bitSetCase(Options, "Nested", ClassOptions::Nested);<br>
-    IO.bitSetCase(Options, "ContainsNestedClass",<br>
-                  ClassOptions::<wbr>ContainsNestedClass);<br>
-    IO.bitSetCase(Options, "<wbr>HasOverloadedAssignmentOperato<wbr>r",<br>
-                  ClassOptions::<wbr>HasOverloadedAssignmentOperato<wbr>r);<br>
-    IO.bitSetCase(Options, "HasConversionOperator",<br>
-                  ClassOptions::<wbr>HasConversionOperator);<br>
-    IO.bitSetCase(Options, "ForwardReference", ClassOptions::<wbr>ForwardReference);<br>
-    IO.bitSetCase(Options, "Scoped", ClassOptions::Scoped);<br>
-    IO.bitSetCase(Options, "HasUniqueName", ClassOptions::HasUniqueName);<br>
-    IO.bitSetCase(Options, "Sealed", ClassOptions::Sealed);<br>
-    IO.bitSetCase(Options, "Intrinsic", ClassOptions::Intrinsic);<br>
-  }<br>
-};<br>
-<br>
-template <> struct ScalarBitSetTraits<<wbr>MethodOptions> {<br>
-  static void bitset(IO &IO, MethodOptions &Options) {<br>
-    IO.bitSetCase(Options, "None", MethodOptions::None);<br>
-    IO.bitSetCase(Options, "Pseudo", MethodOptions::Pseudo);<br>
-    IO.bitSetCase(Options, "NoInherit", MethodOptions::NoInherit);<br>
-    IO.bitSetCase(Options, "NoConstruct", MethodOptions::NoConstruct);<br>
-    IO.bitSetCase(Options, "CompilerGenerated",<br>
-                  MethodOptions::<wbr>CompilerGenerated);<br>
-    IO.bitSetCase(Options, "Sealed", MethodOptions::Sealed);<br>
-  }<br>
-};<br>
-<br>
-void ScalarTraits<APSInt>::output(<wbr>const APSInt &S, void *,<br>
-                                  llvm::raw_ostream &OS) {<br>
-  S.print(OS, true);<br>
-}<br>
-StringRef ScalarTraits<APSInt>::input(<wbr>StringRef Scalar, void *Ctx, APSInt &S) {<br>
-  S = APSInt(Scalar);<br>
-  return "";<br>
-}<br>
-<br>
-bool ScalarTraits<APSInt>::<wbr>mustQuote(StringRef Scalar) { return false; }<br>
-<br>
-void MappingContextTraits<CVType, pdb::yaml::<wbr>SerializationContext>::<wbr>mapping(<br>
-    IO &IO, CVType &Record, pdb::yaml::<wbr>SerializationContext &Context) {<br>
-  if (IO.outputting())<br>
-    consumeError(codeview::<wbr>visitTypeRecord(Record, Context.Dumper));<br>
-}<br>
-<br>
-void MappingTraits<StringIdRecord>:<wbr>:mapping(IO &IO, StringIdRecord &String) {<br>
-  IO.mapRequired("Id", String.Id);<br>
-  IO.mapRequired("String", String.String);<br>
-}<br>
-<br>
-void MappingTraits<ArgListRecord>::<wbr>mapping(IO &IO, ArgListRecord &Args) {<br>
-  IO.mapRequired("ArgIndices", Args.ArgIndices);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>StringListRecord>::mapping(IO &IO, StringListRecord &Strings) {<br>
-  IO.mapRequired("StringIndices"<wbr>, Strings.StringIndices);<br>
-}<br>
-<br>
-void MappingTraits<ClassRecord>::<wbr>mapping(IO &IO, ClassRecord &Class) {<br>
-  IO.mapRequired("MemberCount", Class.MemberCount);<br>
-  IO.mapRequired("Options", Class.Options);<br>
-  IO.mapRequired("FieldList", Class.FieldList);<br>
-  IO.mapRequired("Name", Class.Name);<br>
-  IO.mapRequired("UniqueName", Class.UniqueName);<br>
-  IO.mapRequired("<wbr>DerivationList", Class.DerivationList);<br>
-  IO.mapRequired("VTableShape", Class.VTableShape);<br>
-  IO.mapRequired("Size", Class.Size);<br>
-}<br>
-<br>
-void MappingTraits<UnionRecord>::<wbr>mapping(IO &IO, UnionRecord &Union) {<br>
-  IO.mapRequired("MemberCount", Union.MemberCount);<br>
-  IO.mapRequired("Options", Union.Options);<br>
-  IO.mapRequired("FieldList", Union.FieldList);<br>
-  IO.mapRequired("Name", Union.Name);<br>
-  IO.mapRequired("UniqueName", Union.UniqueName);<br>
-  IO.mapRequired("Size", Union.Size);<br>
-}<br>
-<br>
-void MappingTraits<EnumRecord>::<wbr>mapping(IO &IO, EnumRecord &Enum) {<br>
-  IO.mapRequired("<wbr>NumEnumerators", Enum.MemberCount);<br>
-  IO.mapRequired("Options", Enum.Options);<br>
-  IO.mapRequired("FieldList", Enum.FieldList);<br>
-  IO.mapRequired("Name", Enum.Name);<br>
-  IO.mapRequired("UniqueName", Enum.UniqueName);<br>
-  IO.mapRequired("<wbr>UnderlyingType", Enum.UnderlyingType);<br>
-}<br>
-<br>
-void MappingTraits<ArrayRecord>::<wbr>mapping(IO &IO, ArrayRecord &AT) {<br>
-  IO.mapRequired("ElementType", AT.ElementType);<br>
-  IO.mapRequired("IndexType", AT.IndexType);<br>
-  IO.mapRequired("Size", AT.Size);<br>
-  IO.mapRequired("Name", AT.Name);<br>
-}<br>
-<br>
-void MappingTraits<VFTableRecord>::<wbr>mapping(IO &IO, VFTableRecord &VFT) {<br>
-  IO.mapRequired("CompleteClass"<wbr>, VFT.CompleteClass);<br>
-  IO.mapRequired("<wbr>OverriddenVFTable", VFT.OverriddenVFTable);<br>
-  IO.mapRequired("VFPtrOffset", VFT.VFPtrOffset);<br>
-  IO.mapRequired("MethodNames", VFT.MethodNames);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberFuncIdRecord>::mapping(<wbr>IO &IO,<br>
-                                                MemberFuncIdRecord &Id) {<br>
-  IO.mapRequired("ClassType", Id.ClassType);<br>
-  IO.mapRequired("FunctionType", Id.FunctionType);<br>
-  IO.mapRequired("Name", Id.Name);<br>
-}<br>
-<br>
-void MappingTraits<ProcedureRecord><wbr>::mapping(IO &IO, ProcedureRecord &Proc) {<br>
-  IO.mapRequired("ReturnType", Proc.ReturnType);<br>
-  IO.mapRequired("CallConv", Proc.CallConv);<br>
-  IO.mapRequired("Options", Proc.Options);<br>
-  IO.mapRequired("<wbr>ParameterCount", Proc.ParameterCount);<br>
-  IO.mapRequired("ArgumentList", Proc.ArgumentList);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberFunctionRecord>::<wbr>mapping(IO &IO,<br>
-                                                  MemberFunctionRecord &MF) {<br>
-  IO.mapRequired("ReturnType", MF.ReturnType);<br>
-  IO.mapRequired("ClassType", MF.ClassType);<br>
-  IO.mapRequired("ThisType", MF.ThisType);<br>
-  IO.mapRequired("CallConv", MF.CallConv);<br>
-  IO.mapRequired("Options", MF.Options);<br>
-  IO.mapRequired("<wbr>ParameterCount", MF.ParameterCount);<br>
-  IO.mapRequired("ArgumentList", MF.ArgumentList);<br>
-  IO.mapRequired("<wbr>ThisPointerAdjustment", MF.ThisPointerAdjustment);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MethodOverloadListRecord>::<wbr>mapping(<br>
-    IO &IO, MethodOverloadListRecord &MethodList) {<br>
-  IO.mapRequired("Methods", MethodList.Methods);<br>
-}<br>
-<br>
-void MappingTraits<FuncIdRecord>::<wbr>mapping(IO &IO, FuncIdRecord &Func) {<br>
-  IO.mapRequired("ParentScope", Func.ParentScope);<br>
-  IO.mapRequired("FunctionType", Func.FunctionType);<br>
-  IO.mapRequired("Name", Func.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>TypeServer2Record>::mapping(IO &IO, TypeServer2Record &TS) {<br>
-  IO.mapRequired("Guid", TS.Guid);<br>
-  IO.mapRequired("Age", TS.Age);<br>
-  IO.mapRequired("Name", TS.Name);<br>
-}<br>
-<br>
-void MappingTraits<PointerRecord>::<wbr>mapping(IO &IO, PointerRecord &Ptr) {<br>
-  IO.mapRequired("ReferentType", Ptr.ReferentType);<br>
-  IO.mapRequired("Attrs", Ptr.Attrs);<br>
-  IO.mapOptional("MemberInfo", Ptr.MemberInfo);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>MemberPointerInfo>::mapping(IO &IO, MemberPointerInfo &MPI) {<br>
-  IO.mapRequired("<wbr>ContainingType", MPI.ContainingType);<br>
-  IO.mapRequired("<wbr>Representation", MPI.Representation);<br>
-}<br>
-<br>
-void MappingTraits<ModifierRecord>:<wbr>:mapping(IO &IO, ModifierRecord &Mod) {<br>
-  IO.mapRequired("ModifiedType", Mod.ModifiedType);<br>
-  IO.mapRequired("Modifiers", Mod.Modifiers);<br>
-}<br>
-<br>
-void MappingTraits<BitFieldRecord>:<wbr>:mapping(IO &IO, BitFieldRecord &BitField) {<br>
-  IO.mapRequired("Type", BitField.Type);<br>
-  IO.mapRequired("BitSize", BitField.BitSize);<br>
-  IO.mapRequired("BitOffset", BitField.BitOffset);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>VFTableShapeRecord>::mapping(<wbr>IO &IO,<br>
-                                                VFTableShapeRecord &Shape) {<br>
-  IO.mapRequired("Slots", Shape.Slots);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>UdtSourceLineRecord>::mapping(<wbr>IO &IO,<br>
-                                                 UdtSourceLineRecord &Line) {<br>
-  IO.mapRequired("UDT", Line.UDT);<br>
-  IO.mapRequired("SourceFile", Line.SourceFile);<br>
-  IO.mapRequired("LineNumber", Line.LineNumber);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>UdtModSourceLineRecord>::<wbr>mapping(<br>
-    IO &IO, UdtModSourceLineRecord &Line) {<br>
-  IO.mapRequired("UDT", Line.UDT);<br>
-  IO.mapRequired("SourceFile", Line.SourceFile);<br>
-  IO.mapRequired("LineNumber", Line.LineNumber);<br>
-  IO.mapRequired("Module", Line.Module);<br>
-}<br>
-<br>
-void MappingTraits<BuildInfoRecord><wbr>::mapping(IO &IO, BuildInfoRecord &Args) {<br>
-  IO.mapRequired("ArgIndices", Args.ArgIndices);<br>
-}<br>
-<br>
-void MappingTraits<LabelRecord>::<wbr>mapping(IO &IO, LabelRecord &R) {<br>
-  IO.mapRequired("Mode", R.Mode);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>NestedTypeRecord>::mapping(IO &IO,<br>
-                                              NestedTypeRecord &Nested) {<br>
-  IO.mapRequired("Type", Nested.Type);<br>
-  IO.mapRequired("Name", Nested.Name);<br>
-}<br>
-<br>
-void MappingTraits<OneMethodRecord><wbr>::mapping(IO &IO, OneMethodRecord &Method) {<br>
-  IO.mapRequired("Type", Method.Type);<br>
-  IO.mapRequired("Attrs", Method.Attrs.Attrs);<br>
-  IO.mapRequired("VFTableOffset"<wbr>, Method.VFTableOffset);<br>
-  IO.mapRequired("Name", Method.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>OverloadedMethodRecord>::<wbr>mapping(<br>
-    IO &IO, OverloadedMethodRecord &Method) {<br>
-  IO.mapRequired("NumOverloads", Method.NumOverloads);<br>
-  IO.mapRequired("MethodList", Method.MethodList);<br>
-  IO.mapRequired("Name", Method.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>DataMemberRecord>::mapping(IO &IO, DataMemberRecord &Field) {<br>
-  IO.mapRequired("Attrs", Field.Attrs.Attrs);<br>
-  IO.mapRequired("Type", Field.Type);<br>
-  IO.mapRequired("FieldOffset", Field.FieldOffset);<br>
-  IO.mapRequired("Name", Field.Name);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>StaticDataMemberRecord>::<wbr>mapping(<br>
-    IO &IO, StaticDataMemberRecord &Field) {<br>
-  IO.mapRequired("Attrs", Field.Attrs.Attrs);<br>
-  IO.mapRequired("Type", Field.Type);<br>
-  IO.mapRequired("Name", Field.Name);<br>
-}<br>
-<br>
-void MappingTraits<VFPtrRecord>::<wbr>mapping(IO &IO, VFPtrRecord &VFTable) {<br>
-  IO.mapRequired("Type", VFTable.Type);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>EnumeratorRecord>::mapping(IO &IO, EnumeratorRecord &Enum) {<br>
-  IO.mapRequired("Attrs", Enum.Attrs.Attrs);<br>
-  IO.mapRequired("Value", Enum.Value);<br>
-  IO.mapRequired("Name", Enum.Name);<br>
-}<br>
-<br>
-void MappingTraits<BaseClassRecord><wbr>::mapping(IO &IO, BaseClassRecord &Base) {<br>
-  IO.mapRequired("Attrs", Base.Attrs.Attrs);<br>
-  IO.mapRequired("Type", Base.Type);<br>
-  IO.mapRequired("Offset", Base.Offset);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>VirtualBaseClassRecord>::<wbr>mapping(<br>
-    IO &IO, VirtualBaseClassRecord &Base) {<br>
-  IO.mapRequired("Attrs", Base.Attrs.Attrs);<br>
-  IO.mapRequired("BaseType", Base.BaseType);<br>
-  IO.mapRequired("VBPtrType", Base.VBPtrType);<br>
-  IO.mapRequired("VBPtrOffset", Base.VBPtrOffset);<br>
-  IO.mapRequired("VTableIndex", Base.VTableIndex);<br>
-}<br>
-<br>
-void MappingTraits<<wbr>ListContinuationRecord>::<wbr>mapping(<br>
-    IO &IO, ListContinuationRecord &Cont) {<br>
-  IO.mapRequired("<wbr>ContinuationIndex", Cont.ContinuationIndex);<br>
-}<br>
-<br>
-void ScalarTraits<codeview::<wbr>TypeIndex>::output(const codeview::TypeIndex &S,<br>
-                                               void *, llvm::raw_ostream &OS) {<br>
-  OS << S.getIndex();<br>
-}<br>
-StringRef ScalarTraits<codeview::<wbr>TypeIndex>::input(StringRef Scalar, void *Ctx,<br>
-                                                   codeview::TypeIndex &S) {<br>
-  uint32_t I;<br>
-  StringRef Result = ScalarTraits<uint32_t>::input(<wbr>Scalar, Ctx, I);<br>
-  if (!Result.empty())<br>
-    return Result;<br>
-  S = TypeIndex(I);<br>
-  return "";<br>
-}<br>
-bool ScalarTraits<codeview::<wbr>TypeIndex>::mustQuote(<wbr>StringRef Scalar) {<br>
-  return false;<br>
-}<br>
-<br>
-void ScalarEnumerationTraits<<wbr>TypeLeafKind>::enumeration(IO &io,<br>
-                                                        TypeLeafKind &Value) {<br>
-  auto TypeLeafNames = getTypeLeafNames();<br>
-  for (const auto &E : TypeLeafNames)<br>
-    io.enumCase(Value, E.Name.str().c_str(), E.Value);<br>
-}<br>
-}<br>
-}<br>
-<br>
-Error llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitTypeBegin(<br>
-    CVType &CVR) {<br>
-  YamlIO.mapRequired("Kind", CVR.Type);<br>
-  return Error::success();<br>
-}<br>
-<br>
-Error llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitMemberBegin(<br>
-    CVMemberRecord &Record) {<br>
-  YamlIO.mapRequired("Kind", Record.Kind);<br>
-  return Error::success();<br>
-}<br>
-<br>
-void llvm::codeview::yaml::<wbr>YamlTypeDumperCallbacks::<wbr>visitKnownRecordImpl(<br>
-    const char *Name, CVType &CVR, FieldListRecord &FieldList) {<br>
-  std::vector<llvm::pdb::yaml::<wbr>PdbTpiFieldListRecord> FieldListRecords;<br>
-  if (YamlIO.outputting()) {<br>
-    // If we are outputting, then `FieldList.Data` contains a huge chunk of data<br>
-    // representing the serialized list of members.  We need to split it up into<br>
-    // individual CVType records where each record represents an individual<br>
-    // member.  This way, we can simply map the entire thing as a Yaml sequence,<br>
-    // which will recurse back to the standard handler for top-level fields<br>
-    // (top-level and member fields all have the exact same Yaml syntax so use<br>
-    // the same parser).<br>
-    FieldListRecordSplitter Splitter(FieldListRecords);<br>
-    consumeError(codeview::<wbr>visitMemberRecordStream(<wbr>FieldList.Data, Splitter));<br>
-  }<br>
-  // Note that if we're not outputting (i.e. Yaml -> PDB) the result of this<br>
-  // mapping gets lost, as the records are simply stored in this locally scoped<br>
-  // vector.  What's important though is they are all sharing a single<br>
-  // Serializer<br>
-  // instance (in `Context.ActiveSerializer`), and that is building up a list of<br>
-  // all the types.  The fact that we need a throwaway vector here is just to<br>
-  // appease the YAML API to treat this as a sequence and do this mapping once<br>
-  // for each YAML Sequence element in the input Yaml stream.<br>
-  YamlIO.mapRequired("FieldList"<wbr>, FieldListRecords, Context);<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-template <><br>
-struct MappingContextTraits<pdb::<wbr>yaml::PdbTpiFieldListRecord,<br>
-                            pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, pdb::yaml::<wbr>PdbTpiFieldListRecord &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context) {<br>
-    if (IO.outputting())<br>
-      consumeError(codeview::<wbr>visitMemberRecord(Obj.Record, Context.Dumper));<br>
-    else {<br>
-      // If we are not outputting, then the array contains no data starting out,<br>
-      // and is instead populated from the sequence represented by the yaml --<br>
-      // again, using the same logic that we use for top-level records.<br>
-      assert(Context.<wbr>ActiveSerializer && "There is no active serializer!");<br>
-      codeview::<wbr>TypeVisitorCallbackPipeline Pipeline;<br>
-      pdb::TpiHashUpdater Hasher;<br>
-<br>
-      Pipeline.<wbr>addCallbackToPipeline(Context.<wbr>Dumper);<br>
-      Pipeline.<wbr>addCallbackToPipeline(*<wbr>Context.ActiveSerializer);<br>
-      Pipeline.<wbr>addCallbackToPipeline(Hasher);<br>
-      consumeError(<br>
-          codeview::visitMemberRecord(<wbr>Obj.Record, Pipeline, VDS_BytesExternal));<br>
-    }<br>
-  }<br>
-};<br>
-}<br>
-}<br>
<br>
Removed: llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.h?rev=304247&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/YamlTypeDumper.h?rev=<wbr>304247&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>YamlTypeDumper.h (removed)<br>
@@ -1,116 +0,0 @@<br>
-//===- YamlTypeDumper.h ------------------------------<wbr>--------- *- C++ --*-===//<br>
-//<br>
-//                     The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#ifndef LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLTYPEDUMPER_H<br>
-#define LLVM_TOOLS_LLVMPDBDUMP_<wbr>YAMLTYPEDUMPER_H<br>
-<br>
-#include "llvm/DebugInfo/CodeView/<wbr>CodeView.h"<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeVisitorCallbacks.h"<br>
-#include "llvm/Support/YAMLTraits.h"<br>
-<br>
-namespace llvm {<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext;<br>
-}<br>
-}<br>
-namespace codeview {<br>
-namespace yaml {<br>
-class YamlTypeDumperCallbacks : public TypeVisitorCallbacks {<br>
-public:<br>
-  YamlTypeDumperCallbacks(llvm::<wbr>yaml::IO &IO,<br>
-                          llvm::pdb::yaml::<wbr>SerializationContext &Context)<br>
-      : YamlIO(IO), Context(Context) {}<br>
-<br>
-  virtual Error visitTypeBegin(CVType &Record) override;<br>
-  virtual Error visitMemberBegin(<wbr>CVMemberRecord &Record) override;<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name)                                   \<br>
-  Error visitKnownRecord(CVRecord<<wbr>TypeLeafKind> &CVR, Name##Record &Record)    \<br>
-      override {                                                               \<br>
-    visitKnownRecordImpl(#Name, CVR, Record);                                  \<br>
-    return Error::success();                                                   \<br>
-  }<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \<br>
-  Error visitKnownMember(<wbr>CVMemberRecord &CVR, Name##Record &Record) override { \<br>
-    visitKnownMemberImpl(#Name, Record);                                       \<br>
-    return Error::success();                                                   \<br>
-  }<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-<br>
-private:<br>
-  template <typename T> void visitKnownMemberImpl(const char *Name, T &Record) {<br>
-    YamlIO.mapRequired(Name, Record);<br>
-  }<br>
-<br>
-  template <typename T><br>
-  void visitKnownRecordImpl(const char *Name, CVType &Type, T &Record) {<br>
-    YamlIO.mapRequired(Name, Record);<br>
-  }<br>
-<br>
-  void visitKnownRecordImpl(const char *Name, CVType &CVR,<br>
-                            FieldListRecord &FieldList);<br>
-<br>
-  llvm::yaml::IO &YamlIO;<br>
-  llvm::pdb::yaml::<wbr>SerializationContext &Context;<br>
-};<br>
-}<br>
-}<br>
-namespace pdb {<br>
-namespace yaml {<br>
-struct SerializationContext;<br>
-}<br>
-}<br>
-}<br>
-<br>
-namespace llvm {<br>
-namespace yaml {<br>
-<br>
-template <> struct ScalarTraits<APSInt> {<br>
-  static void output(const APSInt &S, void *, llvm::raw_ostream &OS);<br>
-  static StringRef input(StringRef Scalar, void *Ctx, APSInt &S);<br>
-  static bool mustQuote(StringRef Scalar);<br>
-};<br>
-<br>
-template <> struct ScalarTraits<codeview::<wbr>TypeIndex> {<br>
-  static void output(const codeview::TypeIndex &S, void *,<br>
-                     llvm::raw_ostream &OS);<br>
-  static StringRef input(StringRef Scalar, void *Ctx, codeview::TypeIndex &S);<br>
-  static bool mustQuote(StringRef Scalar);<br>
-};<br>
-<br>
-template <> struct MappingTraits<codeview::<wbr>MemberPointerInfo> {<br>
-  static void mapping(IO &IO, codeview::MemberPointerInfo &Obj);<br>
-};<br>
-<br>
-template <><br>
-struct MappingContextTraits<codeview:<wbr>:CVType, pdb::yaml::<wbr>SerializationContext> {<br>
-  static void mapping(IO &IO, codeview::CVType &Obj,<br>
-                      pdb::yaml::<wbr>SerializationContext &Context);<br>
-};<br>
-<br>
-template <> struct ScalarEnumerationTraits<<wbr>codeview::TypeLeafKind> {<br>
-  static void enumeration(IO &io, codeview::TypeLeafKind &Value);<br>
-};<br>
-<br>
-#define TYPE_RECORD(EnumName, EnumVal, Name)                                   \<br>
-  template <> struct MappingTraits<codeview::Name##<wbr>Record> {                   \<br>
-    static void mapping(IO &IO, codeview::Name##Record &Obj);                  \<br>
-  };<br>
-#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \<br>
-  TYPE_RECORD(EnumName, EnumVal, Name)<br>
-#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)<br>
-#include "llvm/DebugInfo/CodeView/<wbr>TypeRecords.def"<br>
-}<br>
-}<br>
-<br>
-#endif<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=304248&r1=304247&r2=304248&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/tools/llvm-<wbr>pdbdump/llvm-pdbdump.cpp?rev=<wbr>304248&r1=304247&r2=304248&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/<wbr>llvm-pdbdump.cpp Tue May 30 16:53:05 2017<br>
@@ -61,6 +61,7 @@<br>
 #include "llvm/DebugInfo/PDB/<wbr>PDBSymbolExe.h"<br>
 #include "llvm/DebugInfo/PDB/<wbr>PDBSymbolFunc.h"<br>
 #include "llvm/DebugInfo/PDB/<wbr>PDBSymbolThunk.h"<br>
+#include "llvm/ObjectYAML/CodeViewYAML.<wbr>h"<br>
 #include "llvm/Support/<wbr>BinaryByteStream.h"<br>
 #include "llvm/Support/COM.h"<br>
 #include "llvm/Support/CommandLine.h"<br>
@@ -476,6 +477,7 @@ static void yamlToPdb(StringRef Path) {<br>
   std::unique_ptr<MemoryBuffer> &Buffer = ErrorOrBuffer.get();<br>
<br>
   llvm::yaml::Input In(Buffer->getBuffer());<br>
+  In.setContext(&Allocator);<br>
   pdb::yaml::PdbObject YamlObj(Allocator);<br>
   In >> YamlObj;<br>
<br>
@@ -584,7 +586,7 @@ static void yamlToPdb(StringRef Path) {<br>
         auto Inlinees = llvm::make_unique<<wbr>DebugInlineeLinesSubsection>(<br>
             ChecksumRef, Inlinee.HasExtraFiles);<br>
         for (const auto &Site : Inlinee.Sites) {<br>
-          Inlinees->addInlineSite(Site.<wbr>Inlinee, Site.FileName,<br>
+          Inlinees->addInlineSite(<wbr>TypeIndex(Site.Inlinee), Site.FileName,<br>
                                   Site.SourceLineNum);<br>
           if (!Inlinee.HasExtraFiles)<br>
             continue;<br>
@@ -601,14 +603,18 @@ static void yamlToPdb(StringRef Path) {<br>
   auto &TpiBuilder = Builder.getTpiBuilder();<br>
   const auto &Tpi = YamlObj.TpiStream.getValueOr(<wbr>DefaultTpiStream);<br>
   TpiBuilder.setVersionHeader(<wbr>Tpi.Version);<br>
-  for (const auto &R : Tpi.Records)<br>
-    TpiBuilder.addTypeRecord(R.<wbr>Record.data(), R.Record.Hash);<br>
+  for (const auto &R : Tpi.Records) {<br>
+    CVType Type = R.toCodeViewRecord(Allocator);<br>
+    TpiBuilder.addTypeRecord(Type.<wbr>RecordData, None);<br>
+  }<br>
<br>
   const auto &Ipi = YamlObj.IpiStream.getValueOr(<wbr>DefaultIpiStream);<br>
   auto &IpiBuilder = Builder.getIpiBuilder();<br>
   IpiBuilder.setVersionHeader(<wbr>Ipi.Version);<br>
-  for (const auto &R : Ipi.Records)<br>
-    IpiBuilder.addTypeRecord(R.<wbr>Record.data(), R.Record.Hash);<br>
+  for (const auto &R : Ipi.Records) {<br>
+    CVType Type = R.toCodeViewRecord(Allocator);<br>
+    IpiBuilder.addTypeRecord(Type.<wbr>RecordData, None);<br>
+  }<br>
<br>
   ExitOnErr(Builder.commit(opts:<wbr>:yaml2pdb::YamlPdbOutputFile))<wbr>;<br>
 }<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div>