[llvm] r304248 - [CodeView] Move CodeView YAML code to ObjectYAML.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Tue May 30 17:33:05 PDT 2017


That one is building right now, so we will see shortly.

On Tue, May 30, 2017 at 5:31 PM Zachary Turner <zturner at google.com> wrote:

> I missed this bug in the original patch (not sure why it didn't segfault
> for me locally), but AFAICT this should have been fixed in the next patch
> which did some more refactoring (r304256)
>
> On Tue, May 30, 2017 at 5:20 PM Zachary Turner <zturner at google.com> wrote:
>
>> looking now
>>
>> On Tue, May 30, 2017 at 5:17 PM Peter Collingbourne <peter at pcc.me.uk>
>> wrote:
>>
>>> Hi Zach,
>>>
>>> I think your change caused a number of test failures on the
>>> sanitizer-x86_64-linux-fast bot.
>>>
>>> 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-lld%20asan/logs/stdio
>>> Can you please take a look?
>>>
>>> Thanks,
>>> Peter
>>>
>>> On Tue, May 30, 2017 at 2:53 PM, Zachary Turner via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>>> Author: zturner
>>>> Date: Tue May 30 16:53:05 2017
>>>> New Revision: 304248
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=304248&view=rev
>>>> Log:
>>>> [CodeView] Move CodeView YAML code to ObjectYAML.
>>>>
>>>> This is the beginning of an effort to move the codeview yaml
>>>> reader / writer into ObjectYAML so that it can be shared.
>>>> Currently the only consumer / producer of CodeView YAML is
>>>> llvm-pdbdump, but CodeView can exist outside of PDB files, and
>>>> indeed is put into object files and passed to the linker to
>>>> produce PDB files.  Furthermore, there are subtle differences
>>>> in the types of records that show up in object file CodeView
>>>> vs PDB file CodeView, but they are otherwise 99% the same.
>>>>
>>>> By having this code in ObjectYAML, we can have llvm-pdbdump
>>>> reuse this code, while teaching obj2yaml and yaml2obj to use
>>>> this syntax for dealing with object files that can contain
>>>> CodeView.
>>>>
>>>> This patch only adds support for CodeView type information
>>>> to ObjectYAML.  Subsequent patches will add support for
>>>> CodeView symbol information.
>>>>
>>>> Added:
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
>>>>     llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h
>>>>     llvm/trunk/lib/ObjectYAML/CodeViewYAML.cpp
>>>> Removed:
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def
>>>>     llvm/trunk/tools/llvm-pdbdump/YamlSerializationContext.h
>>>>     llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/YamlTypeDumper.h
>>>> Modified:
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
>>>>
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h
>>>>
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
>>>>     llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
>>>>     llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h
>>>>     llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
>>>>     llvm/trunk/include/llvm/Support/YAMLTraits.h
>>>>     llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
>>>>     llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
>>>>     llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp
>>>>     llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp
>>>>     llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
>>>>     llvm/trunk/lib/MC/MCCodeView.cpp
>>>>     llvm/trunk/lib/ObjectYAML/CMakeLists.txt
>>>>     llvm/trunk/lib/ObjectYAML/LLVMBuild.txt
>>>>     llvm/trunk/tools/llvm-pdbdump/Analyze.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/CMakeLists.txt
>>>>     llvm/trunk/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/PdbYaml.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/PdbYaml.h
>>>>     llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.h
>>>>     llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.cpp
>>>>     llvm/trunk/tools/llvm-pdbdump/YamlSymbolDumper.h
>>>>     llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp
>>>>
>>>> Removed: llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def?rev=304247&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def
>>>> (removed)
>>>> @@ -1,258 +0,0 @@
>>>> -//===-- CVLeafTypes.def - All CodeView leaf types ---------------*-
>>>> C++ -*-===//
>>>> -//
>>>> -//                     The LLVM Compiler Infrastructure
>>>> -//
>>>> -// This file is distributed under the University of Illinois Open
>>>> Source
>>>> -// License. See LICENSE.TXT for details.
>>>> -//
>>>>
>>>> -//===----------------------------------------------------------------------===//
>>>> -//
>>>> -// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
>>>> -//
>>>>
>>>> -//===----------------------------------------------------------------------===//
>>>> -
>>>> -#ifndef CV_SYMBOL
>>>> -#define CV_SYMBOL(ename, value)
>>>> -#endif
>>>> -
>>>> -#ifndef SYMBOL_RECORD
>>>> -#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)
>>>> -#endif
>>>> -
>>>> -#ifndef SYMBOL_RECORD_ALIAS
>>>> -#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>            \
>>>> -  SYMBOL_RECORD(lf_ename, value, name)
>>>> -#endif
>>>> -
>>>> -// 16 bit symbol types. Not very useful, provided only for reference.
>>>> -CV_SYMBOL(S_COMPILE       , 0x0001)
>>>> -CV_SYMBOL(S_REGISTER_16t  , 0x0002)
>>>> -CV_SYMBOL(S_CONSTANT_16t  , 0x0003)
>>>> -CV_SYMBOL(S_UDT_16t       , 0x0004)
>>>> -CV_SYMBOL(S_SSEARCH       , 0x0005)
>>>> -CV_SYMBOL(S_SKIP          , 0x0007)
>>>> -CV_SYMBOL(S_CVRESERVE     , 0x0008)
>>>> -CV_SYMBOL(S_OBJNAME_ST    , 0x0009)
>>>> -CV_SYMBOL(S_ENDARG        , 0x000a)
>>>> -CV_SYMBOL(S_COBOLUDT_16t  , 0x000b)
>>>> -CV_SYMBOL(S_MANYREG_16t   , 0x000c)
>>>> -CV_SYMBOL(S_RETURN        , 0x000d)
>>>> -CV_SYMBOL(S_ENTRYTHIS     , 0x000e)
>>>> -CV_SYMBOL(S_BPREL16       , 0x0100)
>>>> -CV_SYMBOL(S_LDATA16       , 0x0101)
>>>> -CV_SYMBOL(S_GDATA16       , 0x0102)
>>>> -CV_SYMBOL(S_PUB16         , 0x0103)
>>>> -CV_SYMBOL(S_LPROC16       , 0x0104)
>>>> -CV_SYMBOL(S_GPROC16       , 0x0105)
>>>> -CV_SYMBOL(S_THUNK16       , 0x0106)
>>>> -CV_SYMBOL(S_BLOCK16       , 0x0107)
>>>> -CV_SYMBOL(S_WITH16        , 0x0108)
>>>> -CV_SYMBOL(S_LABEL16       , 0x0109)
>>>> -CV_SYMBOL(S_CEXMODEL16    , 0x010a)
>>>> -CV_SYMBOL(S_VFTABLE16     , 0x010b)
>>>> -CV_SYMBOL(S_REGREL16      , 0x010c)
>>>> -CV_SYMBOL(S_BPREL32_16t   , 0x0200)
>>>> -CV_SYMBOL(S_LDATA32_16t   , 0x0201)
>>>> -CV_SYMBOL(S_GDATA32_16t   , 0x0202)
>>>> -CV_SYMBOL(S_PUB32_16t     , 0x0203)
>>>> -CV_SYMBOL(S_LPROC32_16t   , 0x0204)
>>>> -CV_SYMBOL(S_GPROC32_16t   , 0x0205)
>>>> -CV_SYMBOL(S_THUNK32_ST    , 0x0206)
>>>> -CV_SYMBOL(S_BLOCK32_ST    , 0x0207)
>>>> -CV_SYMBOL(S_WITH32_ST     , 0x0208)
>>>> -CV_SYMBOL(S_LABEL32_ST    , 0x0209)
>>>> -CV_SYMBOL(S_CEXMODEL32    , 0x020a)
>>>> -CV_SYMBOL(S_VFTABLE32_16t , 0x020b)
>>>> -CV_SYMBOL(S_REGREL32_16t  , 0x020c)
>>>> -CV_SYMBOL(S_LTHREAD32_16t , 0x020d)
>>>> -CV_SYMBOL(S_GTHREAD32_16t , 0x020e)
>>>> -CV_SYMBOL(S_SLINK32       , 0x020f)
>>>> -CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)
>>>> -CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)
>>>> -CV_SYMBOL(S_PROCREF_ST    , 0x0400)
>>>> -CV_SYMBOL(S_DATAREF_ST    , 0x0401)
>>>> -CV_SYMBOL(S_ALIGN         , 0x0402)
>>>> -CV_SYMBOL(S_LPROCREF_ST   , 0x0403)
>>>> -CV_SYMBOL(S_OEM           , 0x0404)
>>>> -
>>>> -// All post 16 bit symbol types have the 0x1000 bit set.
>>>> -CV_SYMBOL(S_TI16_MAX      , 0x1000)
>>>> -
>>>> -// Mostly unused "start" symbol types.
>>>> -CV_SYMBOL(S_REGISTER_ST   , 0x1001)
>>>> -CV_SYMBOL(S_CONSTANT_ST   , 0x1002)
>>>> -CV_SYMBOL(S_UDT_ST        , 0x1003)
>>>> -CV_SYMBOL(S_COBOLUDT_ST   , 0x1004)
>>>> -CV_SYMBOL(S_MANYREG_ST    , 0x1005)
>>>> -CV_SYMBOL(S_BPREL32_ST    , 0x1006)
>>>> -CV_SYMBOL(S_LDATA32_ST    , 0x1007)
>>>> -CV_SYMBOL(S_GDATA32_ST    , 0x1008)
>>>> -CV_SYMBOL(S_PUB32_ST      , 0x1009)
>>>> -CV_SYMBOL(S_LPROC32_ST    , 0x100a)
>>>> -CV_SYMBOL(S_GPROC32_ST    , 0x100b)
>>>> -CV_SYMBOL(S_VFTABLE32     , 0x100c)
>>>> -CV_SYMBOL(S_REGREL32_ST   , 0x100d)
>>>> -CV_SYMBOL(S_LTHREAD32_ST  , 0x100e)
>>>> -CV_SYMBOL(S_GTHREAD32_ST  , 0x100f)
>>>> -CV_SYMBOL(S_LPROCMIPS_ST  , 0x1010)
>>>> -CV_SYMBOL(S_GPROCMIPS_ST  , 0x1011)
>>>> -
>>>> -CV_SYMBOL(S_COMPILE2_ST   , 0x1013)
>>>> -CV_SYMBOL(S_MANYREG2_ST   , 0x1014)
>>>> -CV_SYMBOL(S_LPROCIA64_ST  , 0x1015)
>>>> -CV_SYMBOL(S_GPROCIA64_ST  , 0x1016)
>>>> -CV_SYMBOL(S_LOCALSLOT_ST  , 0x1017)
>>>> -CV_SYMBOL(S_PARAMSLOT_ST  , 0x1018)
>>>> -CV_SYMBOL(S_ANNOTATION    , 0x1019)
>>>> -CV_SYMBOL(S_GMANPROC_ST   , 0x101a)
>>>> -CV_SYMBOL(S_LMANPROC_ST   , 0x101b)
>>>> -CV_SYMBOL(S_RESERVED1     , 0x101c)
>>>> -CV_SYMBOL(S_RESERVED2     , 0x101d)
>>>> -CV_SYMBOL(S_RESERVED3     , 0x101e)
>>>> -CV_SYMBOL(S_RESERVED4     , 0x101f)
>>>> -CV_SYMBOL(S_LMANDATA_ST   , 0x1020)
>>>> -CV_SYMBOL(S_GMANDATA_ST   , 0x1021)
>>>> -CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)
>>>> -CV_SYMBOL(S_MANREGISTER_ST, 0x1023)
>>>> -CV_SYMBOL(S_MANSLOT_ST    , 0x1024)
>>>> -CV_SYMBOL(S_MANMANYREG_ST , 0x1025)
>>>> -CV_SYMBOL(S_MANREGREL_ST  , 0x1026)
>>>> -CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)
>>>> -CV_SYMBOL(S_MANTYPREF     , 0x1028)
>>>> -CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)
>>>> -
>>>> -// End of S_*_ST symbols, which do not appear to be generated by modern
>>>> -// compilers.
>>>> -CV_SYMBOL(S_ST_MAX        , 0x1100)
>>>> -
>>>> -
>>>> -CV_SYMBOL(S_WITH32        , 0x1104)
>>>> -CV_SYMBOL(S_MANYREG       , 0x110a)
>>>> -CV_SYMBOL(S_LPROCMIPS     , 0x1114)
>>>> -CV_SYMBOL(S_GPROCMIPS     , 0x1115)
>>>> -CV_SYMBOL(S_MANYREG2      , 0x1117)
>>>> -CV_SYMBOL(S_LPROCIA64     , 0x1118)
>>>> -CV_SYMBOL(S_GPROCIA64     , 0x1119)
>>>> -CV_SYMBOL(S_LOCALSLOT     , 0x111a)
>>>> -CV_SYMBOL(S_PARAMSLOT     , 0x111b)
>>>> -
>>>> -// Managed code symbols.
>>>> -CV_SYMBOL(S_MANFRAMEREL   , 0x111e)
>>>> -CV_SYMBOL(S_MANREGISTER   , 0x111f)
>>>> -CV_SYMBOL(S_MANSLOT       , 0x1120)
>>>> -CV_SYMBOL(S_MANMANYREG    , 0x1121)
>>>> -CV_SYMBOL(S_MANREGREL     , 0x1122)
>>>> -CV_SYMBOL(S_MANMANYREG2   , 0x1123)
>>>> -CV_SYMBOL(S_UNAMESPACE    , 0x1124)
>>>> -CV_SYMBOL(S_DATAREF       , 0x1126)
>>>> -CV_SYMBOL(S_ANNOTATIONREF , 0x1128)
>>>> -CV_SYMBOL(S_TOKENREF      , 0x1129)
>>>> -CV_SYMBOL(S_GMANPROC      , 0x112a)
>>>> -CV_SYMBOL(S_LMANPROC      , 0x112b)
>>>> -CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)
>>>> -CV_SYMBOL(S_ATTR_REGISTER , 0x112f)
>>>> -CV_SYMBOL(S_ATTR_REGREL   , 0x1130)
>>>> -CV_SYMBOL(S_ATTR_MANYREG  , 0x1131)
>>>> -
>>>> -
>>>> -CV_SYMBOL(S_SEPCODE       , 0x1132)
>>>> -CV_SYMBOL(S_LOCAL_2005    , 0x1133)
>>>> -CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)
>>>> -CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)
>>>> -CV_SYMBOL(S_DISCARDED     , 0x113b)
>>>> -
>>>> -// Current symbol types for most procedures as of this writing.
>>>> -CV_SYMBOL(S_LPROCMIPS_ID   , 0x1148)
>>>> -CV_SYMBOL(S_GPROCMIPS_ID   , 0x1149)
>>>> -CV_SYMBOL(S_LPROCIA64_ID   , 0x114a)
>>>> -CV_SYMBOL(S_GPROCIA64_ID   , 0x114b)
>>>> -
>>>> -CV_SYMBOL(S_DEFRANGE_HLSL  , 0x1150)
>>>> -CV_SYMBOL(S_GDATA_HLSL     , 0x1151)
>>>> -CV_SYMBOL(S_LDATA_HLSL     , 0x1152)
>>>> -CV_SYMBOL(S_LOCAL_DPC_GROUPSHARED, 0x1154)
>>>> -CV_SYMBOL(S_DEFRANGE_DPC_PTR_TAG, 0x1157)
>>>> -CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)
>>>> -CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)
>>>> -CV_SYMBOL(S_POGODATA       , 0x115c)
>>>> -CV_SYMBOL(S_INLINESITE2    , 0x115d)
>>>> -CV_SYMBOL(S_MOD_TYPEREF    , 0x115f)
>>>> -CV_SYMBOL(S_REF_MINIPDB    , 0x1160)
>>>> -CV_SYMBOL(S_PDBMAP         , 0x1161)
>>>> -CV_SYMBOL(S_GDATA_HLSL32   , 0x1162)
>>>> -CV_SYMBOL(S_LDATA_HLSL32   , 0x1163)
>>>> -CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)
>>>> -CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)
>>>> -
>>>> -// Known symbol types
>>>> -SYMBOL_RECORD(S_END                  , 0x0006, ScopeEndSym)
>>>> -SYMBOL_RECORD_ALIAS(S_INLINESITE_END , 0x114e, InlineSiteEnd,
>>>> ScopeEndSym)
>>>> -SYMBOL_RECORD_ALIAS(S_PROC_ID_END    , 0x114f, ProcEnd, ScopeEndSym)
>>>> -
>>>> -SYMBOL_RECORD(S_THUNK32       , 0x1102, Thunk32Sym)
>>>> -SYMBOL_RECORD(S_TRAMPOLINE    , 0x112c, TrampolineSym)
>>>> -SYMBOL_RECORD(S_SECTION       , 0x1136, SectionSym)
>>>> -SYMBOL_RECORD(S_COFFGROUP     , 0x1137, CoffGroupSym)
>>>> -SYMBOL_RECORD(S_EXPORT        , 0x1138, ExportSym)
>>>> -
>>>> -SYMBOL_RECORD(S_LPROC32       , 0x110f, ProcSym)
>>>> -SYMBOL_RECORD_ALIAS(S_GPROC32       , 0x1110, GlobalProcSym, ProcSym)
>>>> -SYMBOL_RECORD_ALIAS(S_LPROC32_ID     , 0x1146, ProcIdSym, ProcSym)
>>>> -SYMBOL_RECORD_ALIAS(S_GPROC32_ID     , 0x1147, GlobalProcIdSym,
>>>> ProcSym)
>>>> -SYMBOL_RECORD_ALIAS(S_LPROC32_DPC    , 0x1155, DPCProcSym, ProcSym)
>>>> -SYMBOL_RECORD_ALIAS(S_LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)
>>>> -
>>>> -SYMBOL_RECORD(S_REGISTER      , 0x1106, RegisterSym)
>>>> -SYMBOL_RECORD(S_PUB32         , 0x110e, PublicSym32)
>>>> -
>>>> -SYMBOL_RECORD(S_PROCREF       , 0x1125, ProcRefSym)
>>>> -SYMBOL_RECORD_ALIAS(S_LPROCREF, 0x1127, LocalProcRef, ProcRefSym)
>>>> -
>>>> -
>>>> -SYMBOL_RECORD(S_ENVBLOCK      , 0x113d, EnvBlockSym)
>>>> -
>>>> -SYMBOL_RECORD(S_INLINESITE     , 0x114d, InlineSiteSym)
>>>> -SYMBOL_RECORD(S_LOCAL         , 0x113e, LocalSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE      , 0x113f, DefRangeSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_SUBFIELD, 0x1140, DefRangeSubfieldSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_REGISTER, 0x1141, DefRangeRegisterSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142,
>>>> DefRangeFramePointerRelSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143,
>>>> DefRangeSubfieldRegisterSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144,
>>>> DefRangeFramePointerRelFullScopeSym)
>>>> -SYMBOL_RECORD(S_DEFRANGE_REGISTER_REL, 0x1145, DefRangeRegisterRelSym)
>>>> -SYMBOL_RECORD(S_BLOCK32       , 0x1103, BlockSym)
>>>> -SYMBOL_RECORD(S_LABEL32       , 0x1105, LabelSym)
>>>> -SYMBOL_RECORD(S_OBJNAME       , 0x1101, ObjNameSym)
>>>> -SYMBOL_RECORD(S_COMPILE2      , 0x1116, Compile2Sym)
>>>> -SYMBOL_RECORD(S_COMPILE3      , 0x113c, Compile3Sym)
>>>> -SYMBOL_RECORD(S_FRAMEPROC     , 0x1012, FrameProcSym)
>>>> -SYMBOL_RECORD(S_CALLSITEINFO  , 0x1139, CallSiteInfoSym)
>>>> -SYMBOL_RECORD(S_FILESTATIC     , 0x1153, FileStaticSym)
>>>> -SYMBOL_RECORD(S_HEAPALLOCSITE  , 0x115e, HeapAllocationSiteSym)
>>>> -SYMBOL_RECORD(S_FRAMECOOKIE   , 0x113a, FrameCookieSym)
>>>> -
>>>> -SYMBOL_RECORD(S_CALLEES        , 0x115a, CallerSym)
>>>> -SYMBOL_RECORD_ALIAS(S_CALLERS        , 0x115b, CalleeSym, CallerSym)
>>>> -
>>>> -SYMBOL_RECORD(S_UDT           , 0x1108, UDTSym)
>>>> -SYMBOL_RECORD_ALIAS(S_COBOLUDT      , 0x1109, CobolUDT, UDTSym)
>>>> -
>>>> -SYMBOL_RECORD(S_BUILDINFO      , 0x114c, BuildInfoSym)
>>>> -SYMBOL_RECORD(S_BPREL32       , 0x110b, BPRelativeSym)
>>>> -SYMBOL_RECORD(S_REGREL32      , 0x1111, RegRelativeSym)
>>>> -
>>>> -SYMBOL_RECORD(S_CONSTANT      , 0x1107, ConstantSym)
>>>> -SYMBOL_RECORD_ALIAS(S_MANCONSTANT   , 0x112d, ManagedConstant,
>>>> ConstantSym)
>>>> -
>>>> -SYMBOL_RECORD(S_LDATA32       , 0x110c, DataSym)
>>>> -SYMBOL_RECORD_ALIAS(S_GDATA32       , 0x110d, GlobalData, DataSym)
>>>> -SYMBOL_RECORD_ALIAS(S_LMANDATA      , 0x111c, ManagedLocalData,
>>>> DataSym)
>>>> -SYMBOL_RECORD_ALIAS(S_GMANDATA      , 0x111d, ManagedGlobalData,
>>>> DataSym)
>>>> -
>>>> -SYMBOL_RECORD(S_LTHREAD32     , 0x1112, ThreadLocalDataSym)
>>>> -SYMBOL_RECORD_ALIAS(S_GTHREAD32     , 0x1113, GlobalTLS,
>>>> ThreadLocalDataSym)
>>>> -
>>>> -
>>>> -#undef CV_SYMBOL
>>>> -#undef SYMBOL_RECORD
>>>> -#undef SYMBOL_RECORD_ALIAS
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeView.h Tue May 30
>>>> 16:53:05 2017
>>>> @@ -6,6 +6,10 @@
>>>>  // License. See LICENSE.TXT for details.
>>>>  //
>>>>
>>>>  //===----------------------------------------------------------------------===//
>>>> +//
>>>> +// Defines constants and basic types describing CodeView debug
>>>> information.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>>
>>>>  #ifndef LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H
>>>>  #define LLVM_DEBUGINFO_CODEVIEW_CODEVIEW_H
>>>> @@ -22,28 +26,28 @@ namespace codeview {
>>>>  /// documentation and headers talk about this as the "leaf" type.
>>>>  enum class TypeRecordKind : uint16_t {
>>>>  #define TYPE_RECORD(lf_ename, value, name) name = value,
>>>> -#include "TypeRecords.def"
>>>> +#include "CodeViewTypes.def"
>>>>  };
>>>>
>>>>  /// Duplicate copy of the above enum, but using the official CV names.
>>>> Useful
>>>>  /// for reference purposes and when dealing with unknown record types.
>>>>  enum TypeLeafKind : uint16_t {
>>>>  #define CV_TYPE(name, val) name = val,
>>>> -#include "TypeRecords.def"
>>>> +#include "CodeViewTypes.def"
>>>>  };
>>>>
>>>>  /// Distinguishes individual records in the Symbols subsection of a
>>>> .debug$S
>>>>  /// section. Equivalent to SYM_ENUM_e in cvinfo.h.
>>>>  enum class SymbolRecordKind : uint16_t {
>>>>  #define SYMBOL_RECORD(lf_ename, value, name) name = value,
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "CodeViewSymbols.def"
>>>>  };
>>>>
>>>>  /// Duplicate copy of the above enum, but using the official CV names.
>>>> Useful
>>>>  /// for reference purposes and when dealing with unknown record types.
>>>>  enum SymbolKind : uint16_t {
>>>>  #define CV_SYMBOL(name, val) name = val,
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "CodeViewSymbols.def"
>>>>  };
>>>>
>>>>  #define CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Class)
>>>>         \
>>>> @@ -280,7 +284,7 @@ CV_DEFINE_ENUM_CLASS_FLAGS_OPERATORS(Met
>>>>  /// Equivalent to CV_LABEL_TYPE_e.
>>>>  enum class LabelType : uint16_t {
>>>>    Near = 0x0,
>>>> -  Far  = 0x4,
>>>> +  Far = 0x4,
>>>>  };
>>>>
>>>>  /// Equivalent to CV_modifier_t.
>>>>
>>>> Added: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def?rev=304248&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
>>>> (added)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def Tue
>>>> May 30 16:53:05 2017
>>>> @@ -0,0 +1,258 @@
>>>> +//===-- CVLeafTypes.def - All CodeView leaf types ---------------*-
>>>> C++ -*-===//
>>>> +//
>>>> +//                     The LLVM Compiler Infrastructure
>>>> +//
>>>> +// This file is distributed under the University of Illinois Open
>>>> Source
>>>> +// License. See LICENSE.TXT for details.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +//
>>>> +// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +
>>>> +#ifndef CV_SYMBOL
>>>> +#define CV_SYMBOL(ename, value)
>>>> +#endif
>>>> +
>>>> +#ifndef SYMBOL_RECORD
>>>> +#define SYMBOL_RECORD(lf_ename, value, name) CV_SYMBOL(lf_ename, value)
>>>> +#endif
>>>> +
>>>> +#ifndef SYMBOL_RECORD_ALIAS
>>>> +#define SYMBOL_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>            \
>>>> +  SYMBOL_RECORD(lf_ename, value, name)
>>>> +#endif
>>>> +
>>>> +// 16 bit symbol types. Not very useful, provided only for reference.
>>>> +CV_SYMBOL(S_COMPILE       , 0x0001)
>>>> +CV_SYMBOL(S_REGISTER_16t  , 0x0002)
>>>> +CV_SYMBOL(S_CONSTANT_16t  , 0x0003)
>>>> +CV_SYMBOL(S_UDT_16t       , 0x0004)
>>>> +CV_SYMBOL(S_SSEARCH       , 0x0005)
>>>> +CV_SYMBOL(S_SKIP          , 0x0007)
>>>> +CV_SYMBOL(S_CVRESERVE     , 0x0008)
>>>> +CV_SYMBOL(S_OBJNAME_ST    , 0x0009)
>>>> +CV_SYMBOL(S_ENDARG        , 0x000a)
>>>> +CV_SYMBOL(S_COBOLUDT_16t  , 0x000b)
>>>> +CV_SYMBOL(S_MANYREG_16t   , 0x000c)
>>>> +CV_SYMBOL(S_RETURN        , 0x000d)
>>>> +CV_SYMBOL(S_ENTRYTHIS     , 0x000e)
>>>> +CV_SYMBOL(S_BPREL16       , 0x0100)
>>>> +CV_SYMBOL(S_LDATA16       , 0x0101)
>>>> +CV_SYMBOL(S_GDATA16       , 0x0102)
>>>> +CV_SYMBOL(S_PUB16         , 0x0103)
>>>> +CV_SYMBOL(S_LPROC16       , 0x0104)
>>>> +CV_SYMBOL(S_GPROC16       , 0x0105)
>>>> +CV_SYMBOL(S_THUNK16       , 0x0106)
>>>> +CV_SYMBOL(S_BLOCK16       , 0x0107)
>>>> +CV_SYMBOL(S_WITH16        , 0x0108)
>>>> +CV_SYMBOL(S_LABEL16       , 0x0109)
>>>> +CV_SYMBOL(S_CEXMODEL16    , 0x010a)
>>>> +CV_SYMBOL(S_VFTABLE16     , 0x010b)
>>>> +CV_SYMBOL(S_REGREL16      , 0x010c)
>>>> +CV_SYMBOL(S_BPREL32_16t   , 0x0200)
>>>> +CV_SYMBOL(S_LDATA32_16t   , 0x0201)
>>>> +CV_SYMBOL(S_GDATA32_16t   , 0x0202)
>>>> +CV_SYMBOL(S_PUB32_16t     , 0x0203)
>>>> +CV_SYMBOL(S_LPROC32_16t   , 0x0204)
>>>> +CV_SYMBOL(S_GPROC32_16t   , 0x0205)
>>>> +CV_SYMBOL(S_THUNK32_ST    , 0x0206)
>>>> +CV_SYMBOL(S_BLOCK32_ST    , 0x0207)
>>>> +CV_SYMBOL(S_WITH32_ST     , 0x0208)
>>>> +CV_SYMBOL(S_LABEL32_ST    , 0x0209)
>>>> +CV_SYMBOL(S_CEXMODEL32    , 0x020a)
>>>> +CV_SYMBOL(S_VFTABLE32_16t , 0x020b)
>>>> +CV_SYMBOL(S_REGREL32_16t  , 0x020c)
>>>> +CV_SYMBOL(S_LTHREAD32_16t , 0x020d)
>>>> +CV_SYMBOL(S_GTHREAD32_16t , 0x020e)
>>>> +CV_SYMBOL(S_SLINK32       , 0x020f)
>>>> +CV_SYMBOL(S_LPROCMIPS_16t , 0x0300)
>>>> +CV_SYMBOL(S_GPROCMIPS_16t , 0x0301)
>>>> +CV_SYMBOL(S_PROCREF_ST    , 0x0400)
>>>> +CV_SYMBOL(S_DATAREF_ST    , 0x0401)
>>>> +CV_SYMBOL(S_ALIGN         , 0x0402)
>>>> +CV_SYMBOL(S_LPROCREF_ST   , 0x0403)
>>>> +CV_SYMBOL(S_OEM           , 0x0404)
>>>> +
>>>> +// All post 16 bit symbol types have the 0x1000 bit set.
>>>> +CV_SYMBOL(S_TI16_MAX      , 0x1000)
>>>> +
>>>> +// Mostly unused "start" symbol types.
>>>> +CV_SYMBOL(S_REGISTER_ST   , 0x1001)
>>>> +CV_SYMBOL(S_CONSTANT_ST   , 0x1002)
>>>> +CV_SYMBOL(S_UDT_ST        , 0x1003)
>>>> +CV_SYMBOL(S_COBOLUDT_ST   , 0x1004)
>>>> +CV_SYMBOL(S_MANYREG_ST    , 0x1005)
>>>> +CV_SYMBOL(S_BPREL32_ST    , 0x1006)
>>>> +CV_SYMBOL(S_LDATA32_ST    , 0x1007)
>>>> +CV_SYMBOL(S_GDATA32_ST    , 0x1008)
>>>> +CV_SYMBOL(S_PUB32_ST      , 0x1009)
>>>> +CV_SYMBOL(S_LPROC32_ST    , 0x100a)
>>>> +CV_SYMBOL(S_GPROC32_ST    , 0x100b)
>>>> +CV_SYMBOL(S_VFTABLE32     , 0x100c)
>>>> +CV_SYMBOL(S_REGREL32_ST   , 0x100d)
>>>> +CV_SYMBOL(S_LTHREAD32_ST  , 0x100e)
>>>> +CV_SYMBOL(S_GTHREAD32_ST  , 0x100f)
>>>> +CV_SYMBOL(S_LPROCMIPS_ST  , 0x1010)
>>>> +CV_SYMBOL(S_GPROCMIPS_ST  , 0x1011)
>>>> +
>>>> +CV_SYMBOL(S_COMPILE2_ST   , 0x1013)
>>>> +CV_SYMBOL(S_MANYREG2_ST   , 0x1014)
>>>> +CV_SYMBOL(S_LPROCIA64_ST  , 0x1015)
>>>> +CV_SYMBOL(S_GPROCIA64_ST  , 0x1016)
>>>> +CV_SYMBOL(S_LOCALSLOT_ST  , 0x1017)
>>>> +CV_SYMBOL(S_PARAMSLOT_ST  , 0x1018)
>>>> +CV_SYMBOL(S_ANNOTATION    , 0x1019)
>>>> +CV_SYMBOL(S_GMANPROC_ST   , 0x101a)
>>>> +CV_SYMBOL(S_LMANPROC_ST   , 0x101b)
>>>> +CV_SYMBOL(S_RESERVED1     , 0x101c)
>>>> +CV_SYMBOL(S_RESERVED2     , 0x101d)
>>>> +CV_SYMBOL(S_RESERVED3     , 0x101e)
>>>> +CV_SYMBOL(S_RESERVED4     , 0x101f)
>>>> +CV_SYMBOL(S_LMANDATA_ST   , 0x1020)
>>>> +CV_SYMBOL(S_GMANDATA_ST   , 0x1021)
>>>> +CV_SYMBOL(S_MANFRAMEREL_ST, 0x1022)
>>>> +CV_SYMBOL(S_MANREGISTER_ST, 0x1023)
>>>> +CV_SYMBOL(S_MANSLOT_ST    , 0x1024)
>>>> +CV_SYMBOL(S_MANMANYREG_ST , 0x1025)
>>>> +CV_SYMBOL(S_MANREGREL_ST  , 0x1026)
>>>> +CV_SYMBOL(S_MANMANYREG2_ST, 0x1027)
>>>> +CV_SYMBOL(S_MANTYPREF     , 0x1028)
>>>> +CV_SYMBOL(S_UNAMESPACE_ST , 0x1029)
>>>> +
>>>> +// End of S_*_ST symbols, which do not appear to be generated by modern
>>>> +// compilers.
>>>> +CV_SYMBOL(S_ST_MAX        , 0x1100)
>>>> +
>>>> +
>>>> +CV_SYMBOL(S_WITH32        , 0x1104)
>>>> +CV_SYMBOL(S_MANYREG       , 0x110a)
>>>> +CV_SYMBOL(S_LPROCMIPS     , 0x1114)
>>>> +CV_SYMBOL(S_GPROCMIPS     , 0x1115)
>>>> +CV_SYMBOL(S_MANYREG2      , 0x1117)
>>>> +CV_SYMBOL(S_LPROCIA64     , 0x1118)
>>>> +CV_SYMBOL(S_GPROCIA64     , 0x1119)
>>>> +CV_SYMBOL(S_LOCALSLOT     , 0x111a)
>>>> +CV_SYMBOL(S_PARAMSLOT     , 0x111b)
>>>> +
>>>> +// Managed code symbols.
>>>> +CV_SYMBOL(S_MANFRAMEREL   , 0x111e)
>>>> +CV_SYMBOL(S_MANREGISTER   , 0x111f)
>>>> +CV_SYMBOL(S_MANSLOT       , 0x1120)
>>>> +CV_SYMBOL(S_MANMANYREG    , 0x1121)
>>>> +CV_SYMBOL(S_MANREGREL     , 0x1122)
>>>> +CV_SYMBOL(S_MANMANYREG2   , 0x1123)
>>>> +CV_SYMBOL(S_UNAMESPACE    , 0x1124)
>>>> +CV_SYMBOL(S_DATAREF       , 0x1126)
>>>> +CV_SYMBOL(S_ANNOTATIONREF , 0x1128)
>>>> +CV_SYMBOL(S_TOKENREF      , 0x1129)
>>>> +CV_SYMBOL(S_GMANPROC      , 0x112a)
>>>> +CV_SYMBOL(S_LMANPROC      , 0x112b)
>>>> +CV_SYMBOL(S_ATTR_FRAMEREL , 0x112e)
>>>> +CV_SYMBOL(S_ATTR_REGISTER , 0x112f)
>>>> +CV_SYMBOL(S_ATTR_REGREL   , 0x1130)
>>>> +CV_SYMBOL(S_ATTR_MANYREG  , 0x1131)
>>>> +
>>>> +
>>>> +CV_SYMBOL(S_SEPCODE       , 0x1132)
>>>> +CV_SYMBOL(S_LOCAL_2005    , 0x1133)
>>>> +CV_SYMBOL(S_DEFRANGE_2005 , 0x1134)
>>>> +CV_SYMBOL(S_DEFRANGE2_2005, 0x1135)
>>>> +CV_SYMBOL(S_DISCARDED     , 0x113b)
>>>> +
>>>> +// Current symbol types for most procedures as of this writing.
>>>> +CV_SYMBOL(S_LPROCMIPS_ID   , 0x1148)
>>>> +CV_SYMBOL(S_GPROCMIPS_ID   , 0x1149)
>>>> +CV_SYMBOL(S_LPROCIA64_ID   , 0x114a)
>>>> +CV_SYMBOL(S_GPROCIA64_ID   , 0x114b)
>>>> +
>>>> +CV_SYMBOL(S_DEFRANGE_HLSL  , 0x1150)
>>>> +CV_SYMBOL(S_GDATA_HLSL     , 0x1151)
>>>> +CV_SYMBOL(S_LDATA_HLSL     , 0x1152)
>>>> +CV_SYMBOL(S_LOCAL_DPC_GROUPSHARED, 0x1154)
>>>> +CV_SYMBOL(S_DEFRANGE_DPC_PTR_TAG, 0x1157)
>>>> +CV_SYMBOL(S_DPC_SYM_TAG_MAP, 0x1158)
>>>> +CV_SYMBOL(S_ARMSWITCHTABLE , 0x1159)
>>>> +CV_SYMBOL(S_POGODATA       , 0x115c)
>>>> +CV_SYMBOL(S_INLINESITE2    , 0x115d)
>>>> +CV_SYMBOL(S_MOD_TYPEREF    , 0x115f)
>>>> +CV_SYMBOL(S_REF_MINIPDB    , 0x1160)
>>>> +CV_SYMBOL(S_PDBMAP         , 0x1161)
>>>> +CV_SYMBOL(S_GDATA_HLSL32   , 0x1162)
>>>> +CV_SYMBOL(S_LDATA_HLSL32   , 0x1163)
>>>> +CV_SYMBOL(S_GDATA_HLSL32_EX, 0x1164)
>>>> +CV_SYMBOL(S_LDATA_HLSL32_EX, 0x1165)
>>>> +
>>>> +// Known symbol types
>>>> +SYMBOL_RECORD(S_END                  , 0x0006, ScopeEndSym)
>>>> +SYMBOL_RECORD_ALIAS(S_INLINESITE_END , 0x114e, InlineSiteEnd,
>>>> ScopeEndSym)
>>>> +SYMBOL_RECORD_ALIAS(S_PROC_ID_END    , 0x114f, ProcEnd, ScopeEndSym)
>>>> +
>>>> +SYMBOL_RECORD(S_THUNK32       , 0x1102, Thunk32Sym)
>>>> +SYMBOL_RECORD(S_TRAMPOLINE    , 0x112c, TrampolineSym)
>>>> +SYMBOL_RECORD(S_SECTION       , 0x1136, SectionSym)
>>>> +SYMBOL_RECORD(S_COFFGROUP     , 0x1137, CoffGroupSym)
>>>> +SYMBOL_RECORD(S_EXPORT        , 0x1138, ExportSym)
>>>> +
>>>> +SYMBOL_RECORD(S_LPROC32       , 0x110f, ProcSym)
>>>> +SYMBOL_RECORD_ALIAS(S_GPROC32       , 0x1110, GlobalProcSym, ProcSym)
>>>> +SYMBOL_RECORD_ALIAS(S_LPROC32_ID     , 0x1146, ProcIdSym, ProcSym)
>>>> +SYMBOL_RECORD_ALIAS(S_GPROC32_ID     , 0x1147, GlobalProcIdSym,
>>>> ProcSym)
>>>> +SYMBOL_RECORD_ALIAS(S_LPROC32_DPC    , 0x1155, DPCProcSym, ProcSym)
>>>> +SYMBOL_RECORD_ALIAS(S_LPROC32_DPC_ID , 0x1156, DPCProcIdSym, ProcSym)
>>>> +
>>>> +SYMBOL_RECORD(S_REGISTER      , 0x1106, RegisterSym)
>>>> +SYMBOL_RECORD(S_PUB32         , 0x110e, PublicSym32)
>>>> +
>>>> +SYMBOL_RECORD(S_PROCREF       , 0x1125, ProcRefSym)
>>>> +SYMBOL_RECORD_ALIAS(S_LPROCREF, 0x1127, LocalProcRef, ProcRefSym)
>>>> +
>>>> +
>>>> +SYMBOL_RECORD(S_ENVBLOCK      , 0x113d, EnvBlockSym)
>>>> +
>>>> +SYMBOL_RECORD(S_INLINESITE     , 0x114d, InlineSiteSym)
>>>> +SYMBOL_RECORD(S_LOCAL         , 0x113e, LocalSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE      , 0x113f, DefRangeSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_SUBFIELD, 0x1140, DefRangeSubfieldSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_REGISTER, 0x1141, DefRangeRegisterSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142,
>>>> DefRangeFramePointerRelSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143,
>>>> DefRangeSubfieldRegisterSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144,
>>>> DefRangeFramePointerRelFullScopeSym)
>>>> +SYMBOL_RECORD(S_DEFRANGE_REGISTER_REL, 0x1145, DefRangeRegisterRelSym)
>>>> +SYMBOL_RECORD(S_BLOCK32       , 0x1103, BlockSym)
>>>> +SYMBOL_RECORD(S_LABEL32       , 0x1105, LabelSym)
>>>> +SYMBOL_RECORD(S_OBJNAME       , 0x1101, ObjNameSym)
>>>> +SYMBOL_RECORD(S_COMPILE2      , 0x1116, Compile2Sym)
>>>> +SYMBOL_RECORD(S_COMPILE3      , 0x113c, Compile3Sym)
>>>> +SYMBOL_RECORD(S_FRAMEPROC     , 0x1012, FrameProcSym)
>>>> +SYMBOL_RECORD(S_CALLSITEINFO  , 0x1139, CallSiteInfoSym)
>>>> +SYMBOL_RECORD(S_FILESTATIC     , 0x1153, FileStaticSym)
>>>> +SYMBOL_RECORD(S_HEAPALLOCSITE  , 0x115e, HeapAllocationSiteSym)
>>>> +SYMBOL_RECORD(S_FRAMECOOKIE   , 0x113a, FrameCookieSym)
>>>> +
>>>> +SYMBOL_RECORD(S_CALLEES        , 0x115a, CallerSym)
>>>> +SYMBOL_RECORD_ALIAS(S_CALLERS        , 0x115b, CalleeSym, CallerSym)
>>>> +
>>>> +SYMBOL_RECORD(S_UDT           , 0x1108, UDTSym)
>>>> +SYMBOL_RECORD_ALIAS(S_COBOLUDT      , 0x1109, CobolUDT, UDTSym)
>>>> +
>>>> +SYMBOL_RECORD(S_BUILDINFO      , 0x114c, BuildInfoSym)
>>>> +SYMBOL_RECORD(S_BPREL32       , 0x110b, BPRelativeSym)
>>>> +SYMBOL_RECORD(S_REGREL32      , 0x1111, RegRelativeSym)
>>>> +
>>>> +SYMBOL_RECORD(S_CONSTANT      , 0x1107, ConstantSym)
>>>> +SYMBOL_RECORD_ALIAS(S_MANCONSTANT   , 0x112d, ManagedConstant,
>>>> ConstantSym)
>>>> +
>>>> +SYMBOL_RECORD(S_LDATA32       , 0x110c, DataSym)
>>>> +SYMBOL_RECORD_ALIAS(S_GDATA32       , 0x110d, GlobalData, DataSym)
>>>> +SYMBOL_RECORD_ALIAS(S_LMANDATA      , 0x111c, ManagedLocalData,
>>>> DataSym)
>>>> +SYMBOL_RECORD_ALIAS(S_GMANDATA      , 0x111d, ManagedGlobalData,
>>>> DataSym)
>>>> +
>>>> +SYMBOL_RECORD(S_LTHREAD32     , 0x1112, ThreadLocalDataSym)
>>>> +SYMBOL_RECORD_ALIAS(S_GTHREAD32     , 0x1113, GlobalTLS,
>>>> ThreadLocalDataSym)
>>>> +
>>>> +
>>>> +#undef CV_SYMBOL
>>>> +#undef SYMBOL_RECORD
>>>> +#undef SYMBOL_RECORD_ALIAS
>>>>
>>>> Added: llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def?rev=304248&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def (added)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/CodeViewTypes.def Tue
>>>> May 30 16:53:05 2017
>>>> @@ -0,0 +1,251 @@
>>>> +
>>>> +//===-- CVLeafTypes.def - All CodeView leaf types ---------------*-
>>>> C++ -*-===//
>>>> +//
>>>> +//                     The LLVM Compiler Infrastructure
>>>> +//
>>>> +// This file is distributed under the University of Illinois Open
>>>> Source
>>>> +// License. See LICENSE.TXT for details.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +//
>>>> +// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +
>>>> +// If the type is known, then we have a record describing it in
>>>> TypeRecord.h.
>>>> +
>>>> +#ifndef CV_TYPE
>>>> +#define CV_TYPE(lf_ename, value)
>>>> +#endif
>>>> +
>>>> +// If the type is known, then we have a record describing it in
>>>> TypeRecord.h.
>>>> +#ifndef TYPE_RECORD
>>>> +#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)
>>>> +#endif
>>>> +
>>>> +#ifndef TYPE_RECORD_ALIAS
>>>> +#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>          \
>>>> +  TYPE_RECORD(lf_ename, value, name)
>>>> +#endif
>>>> +
>>>> +#ifndef MEMBER_RECORD
>>>> +#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename,
>>>> value, name)
>>>> +#endif
>>>> +
>>>> +#ifndef MEMBER_RECORD_ALIAS
>>>> +#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>          \
>>>> +  MEMBER_RECORD(lf_ename, value, name)
>>>> +#endif
>>>> +
>>>> +TYPE_RECORD(LF_POINTER, 0x1002, Pointer)
>>>> +TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)
>>>> +TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)
>>>> +TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)
>>>> +TYPE_RECORD(LF_LABEL, 0x000e, Label)
>>>> +TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)
>>>> +
>>>> +TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)
>>>> +
>>>> +TYPE_RECORD(LF_ARRAY, 0x1503, Array)
>>>> +TYPE_RECORD(LF_CLASS, 0x1504, Class)
>>>> +TYPE_RECORD_ALIAS(LF_STRUCTURE, 0x1505, Struct, Class)
>>>> +TYPE_RECORD_ALIAS(LF_INTERFACE, 0x1519, Interface, Class)
>>>> +TYPE_RECORD(LF_UNION, 0x1506, Union)
>>>> +TYPE_RECORD(LF_ENUM, 0x1507, Enum)
>>>> +TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
>>>> +TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
>>>> +TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
>>>> +
>>>> +TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
>>>> +
>>>> +// Member type records. These are generally not length prefixed, and
>>>> appear
>>>> +// inside of a field list record.
>>>> +MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)
>>>> +MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
>>>> +
>>>> +MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)
>>>> +MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
>>>> +                    VirtualBaseClass)
>>>> +
>>>> +MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
>>>> +MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)
>>>> +MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)
>>>> +MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)
>>>> +MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)
>>>> +MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)
>>>> +MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)
>>>> +MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)
>>>> +
>>>> +// ID leaf records. Subsequent leaf types may be referenced from
>>>> .debug$S.
>>>> +TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
>>>> +TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
>>>> +TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
>>>> +TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
>>>> +TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
>>>> +TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
>>>> +TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)
>>>> +
>>>> +
>>>> +TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)
>>>> +
>>>> +
>>>> +// 16 bit type records.
>>>> +CV_TYPE(LF_MODIFIER_16t, 0x0001)
>>>> +CV_TYPE(LF_POINTER_16t, 0x0002)
>>>> +CV_TYPE(LF_ARRAY_16t, 0x0003)
>>>> +CV_TYPE(LF_CLASS_16t, 0x0004)
>>>> +CV_TYPE(LF_STRUCTURE_16t, 0x0005)
>>>> +CV_TYPE(LF_UNION_16t, 0x0006)
>>>> +CV_TYPE(LF_ENUM_16t, 0x0007)
>>>> +CV_TYPE(LF_PROCEDURE_16t, 0x0008)
>>>> +CV_TYPE(LF_MFUNCTION_16t, 0x0009)
>>>> +CV_TYPE(LF_COBOL0_16t, 0x000b)
>>>> +CV_TYPE(LF_COBOL1, 0x000c)
>>>> +CV_TYPE(LF_BARRAY_16t, 0x000d)
>>>> +CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL
>>>> +CV_TYPE(LF_NOTTRAN, 0x0010)
>>>> +CV_TYPE(LF_DIMARRAY_16t, 0x0011)
>>>> +CV_TYPE(LF_VFTPATH_16t, 0x0012)
>>>> +CV_TYPE(LF_PRECOMP_16t, 0x0013)
>>>> +CV_TYPE(LF_ENDPRECOMP, 0x0014)
>>>> +CV_TYPE(LF_OEM_16t, 0x0015)
>>>> +CV_TYPE(LF_TYPESERVER_ST, 0x0016)
>>>> +
>>>> +CV_TYPE(LF_SKIP_16t, 0x0200)
>>>> +CV_TYPE(LF_ARGLIST_16t, 0x0201)
>>>> +CV_TYPE(LF_DEFARG_16t, 0x0202)
>>>> +CV_TYPE(LF_LIST, 0x0203)
>>>> +CV_TYPE(LF_FIELDLIST_16t, 0x0204)
>>>> +CV_TYPE(LF_DERIVED_16t, 0x0205)
>>>> +CV_TYPE(LF_BITFIELD_16t, 0x0206)
>>>> +CV_TYPE(LF_METHODLIST_16t, 0x0207)
>>>> +CV_TYPE(LF_DIMCONU_16t, 0x0208)
>>>> +CV_TYPE(LF_DIMCONLU_16t, 0x0209)
>>>> +CV_TYPE(LF_DIMVARU_16t, 0x020a)
>>>> +CV_TYPE(LF_DIMVARLU_16t, 0x020b)
>>>> +CV_TYPE(LF_REFSYM, 0x020c)
>>>> +
>>>> +// 16 bit member types. Generally not length prefixed.
>>>> +CV_TYPE(LF_BCLASS_16t, 0x0400)
>>>> +CV_TYPE(LF_VBCLASS_16t, 0x0401)
>>>> +CV_TYPE(LF_IVBCLASS_16t, 0x0402)
>>>> +CV_TYPE(LF_ENUMERATE_ST, 0x0403)
>>>> +CV_TYPE(LF_FRIENDFCN_16t, 0x0404)
>>>> +CV_TYPE(LF_INDEX_16t, 0x0405)
>>>> +CV_TYPE(LF_MEMBER_16t, 0x0406)
>>>> +CV_TYPE(LF_STMEMBER_16t, 0x0407)
>>>> +CV_TYPE(LF_METHOD_16t, 0x0408)
>>>> +CV_TYPE(LF_NESTTYPE_16t, 0x0409)
>>>> +CV_TYPE(LF_VFUNCTAB_16t, 0x040a)
>>>> +CV_TYPE(LF_FRIENDCLS_16t, 0x040b)
>>>> +CV_TYPE(LF_ONEMETHOD_16t, 0x040c)
>>>> +CV_TYPE(LF_VFUNCOFF_16t, 0x040d)
>>>> +
>>>> +CV_TYPE(LF_TI16_MAX, 0x1000)
>>>> +
>>>> +CV_TYPE(LF_ARRAY_ST, 0x1003)
>>>> +CV_TYPE(LF_CLASS_ST, 0x1004)
>>>> +CV_TYPE(LF_STRUCTURE_ST, 0x1005)
>>>> +CV_TYPE(LF_UNION_ST, 0x1006)
>>>> +CV_TYPE(LF_ENUM_ST, 0x1007)
>>>> +CV_TYPE(LF_COBOL0, 0x100a)
>>>> +CV_TYPE(LF_BARRAY, 0x100b)
>>>> +CV_TYPE(LF_DIMARRAY_ST, 0x100c)
>>>> +CV_TYPE(LF_VFTPATH, 0x100d)
>>>> +CV_TYPE(LF_PRECOMP_ST, 0x100e)
>>>> +CV_TYPE(LF_OEM, 0x100f)
>>>> +CV_TYPE(LF_ALIAS_ST, 0x1010)
>>>> +CV_TYPE(LF_OEM2, 0x1011)
>>>> +
>>>> +CV_TYPE(LF_SKIP, 0x1200)
>>>> +CV_TYPE(LF_DEFARG_ST, 0x1202)
>>>> +CV_TYPE(LF_DERIVED, 0x1204)
>>>> +CV_TYPE(LF_DIMCONU, 0x1207)
>>>> +CV_TYPE(LF_DIMCONLU, 0x1208)
>>>> +CV_TYPE(LF_DIMVARU, 0x1209)
>>>> +CV_TYPE(LF_DIMVARLU, 0x120a)
>>>> +
>>>> +// Member type records. These are generally not length prefixed, and
>>>> appear
>>>> +// inside of a field list record.
>>>> +CV_TYPE(LF_FRIENDFCN_ST, 0x1403)
>>>> +CV_TYPE(LF_MEMBER_ST, 0x1405)
>>>> +CV_TYPE(LF_STMEMBER_ST, 0x1406)
>>>> +CV_TYPE(LF_METHOD_ST, 0x1407)
>>>> +CV_TYPE(LF_NESTTYPE_ST, 0x1408)
>>>> +CV_TYPE(LF_FRIENDCLS, 0x140a)
>>>> +CV_TYPE(LF_ONEMETHOD_ST, 0x140b)
>>>> +CV_TYPE(LF_VFUNCOFF, 0x140c)
>>>> +CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)
>>>> +CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)
>>>> +CV_TYPE(LF_MANAGED_ST, 0x140f)
>>>> +
>>>> +CV_TYPE(LF_ST_MAX, 0x1500)
>>>> +CV_TYPE(LF_TYPESERVER, 0x1501)
>>>> +CV_TYPE(LF_DIMARRAY, 0x1508)
>>>> +CV_TYPE(LF_PRECOMP, 0x1509)
>>>> +CV_TYPE(LF_ALIAS, 0x150a)
>>>> +CV_TYPE(LF_DEFARG, 0x150b)
>>>> +CV_TYPE(LF_FRIENDFCN, 0x150c)
>>>> +CV_TYPE(LF_NESTTYPEEX, 0x1512)
>>>> +CV_TYPE(LF_MEMBERMODIFY, 0x1513)
>>>> +CV_TYPE(LF_MANAGED, 0x1514)
>>>> +CV_TYPE(LF_STRIDED_ARRAY, 0x1516)
>>>> +CV_TYPE(LF_HLSL, 0x1517)
>>>> +CV_TYPE(LF_MODIFIER_EX, 0x1518)
>>>> +CV_TYPE(LF_VECTOR, 0x151b)
>>>> +CV_TYPE(LF_MATRIX, 0x151c)
>>>> +
>>>> +// ID leaf records. Subsequent leaf types may be referenced from
>>>> .debug$S.
>>>> +
>>>> +// Numeric leaf types. These are generally contained in other records,
>>>> and not
>>>> +// encountered in the main type stream.
>>>> +
>>>> +CV_TYPE(LF_NUMERIC, 0x8000)
>>>> +CV_TYPE(LF_CHAR, 0x8000)
>>>> +CV_TYPE(LF_SHORT, 0x8001)
>>>> +CV_TYPE(LF_USHORT, 0x8002)
>>>> +CV_TYPE(LF_LONG, 0x8003)
>>>> +CV_TYPE(LF_ULONG, 0x8004)
>>>> +CV_TYPE(LF_REAL32, 0x8005)
>>>> +CV_TYPE(LF_REAL64, 0x8006)
>>>> +CV_TYPE(LF_REAL80, 0x8007)
>>>> +CV_TYPE(LF_REAL128, 0x8008)
>>>> +CV_TYPE(LF_QUADWORD, 0x8009)
>>>> +CV_TYPE(LF_UQUADWORD, 0x800a)
>>>> +CV_TYPE(LF_REAL48, 0x800b)
>>>> +CV_TYPE(LF_COMPLEX32, 0x800c)
>>>> +CV_TYPE(LF_COMPLEX64, 0x800d)
>>>> +CV_TYPE(LF_COMPLEX80, 0x800e)
>>>> +CV_TYPE(LF_COMPLEX128, 0x800f)
>>>> +CV_TYPE(LF_VARSTRING, 0x8010)
>>>> +CV_TYPE(LF_OCTWORD, 0x8017)
>>>> +CV_TYPE(LF_UOCTWORD, 0x8018)
>>>> +CV_TYPE(LF_DECIMAL, 0x8019)
>>>> +CV_TYPE(LF_DATE, 0x801a)
>>>> +CV_TYPE(LF_UTF8STRING, 0x801b)
>>>> +CV_TYPE(LF_REAL16, 0x801c)
>>>> +
>>>> +// Padding bytes. These are emitted into alignment bytes in the type
>>>> stream.
>>>> +
>>>> +CV_TYPE(LF_PAD0, 0xf0)
>>>> +CV_TYPE(LF_PAD1, 0xf1)
>>>> +CV_TYPE(LF_PAD2, 0xf2)
>>>> +CV_TYPE(LF_PAD3, 0xf3)
>>>> +CV_TYPE(LF_PAD4, 0xf4)
>>>> +CV_TYPE(LF_PAD5, 0xf5)
>>>> +CV_TYPE(LF_PAD6, 0xf6)
>>>> +CV_TYPE(LF_PAD7, 0xf7)
>>>> +CV_TYPE(LF_PAD8, 0xf8)
>>>> +CV_TYPE(LF_PAD9, 0xf9)
>>>> +CV_TYPE(LF_PAD10, 0xfa)
>>>> +CV_TYPE(LF_PAD11, 0xfb)
>>>> +CV_TYPE(LF_PAD12, 0xfc)
>>>> +CV_TYPE(LF_PAD13, 0xfd)
>>>> +CV_TYPE(LF_PAD14, 0xfe)
>>>> +CV_TYPE(LF_PAD15, 0xff)
>>>> +
>>>> +#undef CV_TYPE
>>>> +#undef TYPE_RECORD
>>>> +#undef TYPE_RECORD_ALIAS
>>>> +#undef MEMBER_RECORD
>>>> +#undef MEMBER_RECORD_ALIAS
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -54,7 +54,7 @@ public:
>>>>      return visitKnownRecordImpl(CVR, Record);
>>>>         \
>>>>    }
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>
>>>>  private:
>>>>    template <typename T> Error visitKnownRecordImpl(CVSymbol &CVR, T
>>>> &Record) {
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -29,7 +29,7 @@ public:
>>>>  #define SYMBOL_RECORD(EnumName, EnumVal, Name)
>>>>          \
>>>>    Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>
>>>>  private:
>>>>    Optional<SymbolKind> Kind;
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolSerializer.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -55,7 +55,7 @@ public:
>>>>      return visitKnownRecordImpl(CVR, Record);
>>>>         \
>>>>    }
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>
>>>>  private:
>>>>    template <typename RecordKind>
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
>>>> (original)
>>>> +++
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -59,7 +59,7 @@ public:
>>>>      return Error::success();
>>>>          \
>>>>    }
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>
>>>>  private:
>>>>    std::vector<SymbolVisitorCallbacks *> Pipeline;
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -39,7 +39,7 @@ public:
>>>>      return Error::success();
>>>>          \
>>>>    }
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>  };
>>>>
>>>>  } // end namespace codeview
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -39,7 +39,7 @@ public:
>>>>    Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record)
>>>> override;
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    StringRef getTypeName(TypeIndex Index) const;
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDeserializer.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -41,6 +41,7 @@ public:
>>>>    TypeDeserializer() = default;
>>>>
>>>>    template <typename T> static Error deserializeAs(CVType &CVT, T
>>>> &Record) {
>>>> +    Record.Kind = static_cast<TypeRecordKind>(CVT.kind());
>>>>      MappingInfo I(CVT.content());
>>>>      if (auto EC = I.Mapping.visitTypeBegin(CVT))
>>>>        return EC;
>>>> @@ -75,7 +76,7 @@ public:
>>>>  #define MEMBER_RECORD(EnumName, EnumVal, Name)
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    template <typename RecordType>
>>>> @@ -127,7 +128,7 @@ public:
>>>>    }
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    template <typename RecordType>
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -58,7 +58,7 @@ public:
>>>>    Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record)
>>>> override;
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    void printMemberAttributes(MemberAttributes Attrs);
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecord.h Tue May 30
>>>> 16:53:05 2017
>>>> @@ -123,13 +123,13 @@ protected:
>>>>  public:
>>>>    TypeRecordKind getKind() const { return Kind; }
>>>>
>>>> -private:
>>>>    TypeRecordKind Kind;
>>>>  };
>>>>
>>>>  // LF_MODIFIER
>>>>  class ModifierRecord : public TypeRecord {
>>>>  public:
>>>> +  ModifierRecord() = default;
>>>>    explicit ModifierRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)
>>>>        : TypeRecord(TypeRecordKind::Modifier),
>>>> ModifiedType(ModifiedType),
>>>> @@ -145,6 +145,7 @@ public:
>>>>  // LF_PROCEDURE
>>>>  class ProcedureRecord : public TypeRecord {
>>>>  public:
>>>> +  ProcedureRecord() = default;
>>>>    explicit ProcedureRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv,
>>>>                    FunctionOptions Options, uint16_t ParameterCount,
>>>> @@ -169,6 +170,7 @@ public:
>>>>  // LF_MFUNCTION
>>>>  class MemberFunctionRecord : public TypeRecord {
>>>>  public:
>>>> +  MemberFunctionRecord() = default;
>>>>    explicit MemberFunctionRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>
>>>>    MemberFunctionRecord(TypeIndex ReturnType, TypeIndex ClassType,
>>>> @@ -203,6 +205,7 @@ public:
>>>>  // LF_LABEL
>>>>  class LabelRecord : public TypeRecord {
>>>>  public:
>>>> +  LabelRecord() = default;
>>>>    explicit LabelRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>
>>>>    LabelRecord(LabelType Mode) : TypeRecord(TypeRecordKind::Label),
>>>> Mode(Mode) {}
>>>> @@ -213,6 +216,7 @@ public:
>>>>  // LF_MFUNC_ID
>>>>  class MemberFuncIdRecord : public TypeRecord {
>>>>  public:
>>>> +  MemberFuncIdRecord() = default;
>>>>    explicit MemberFuncIdRecord(TypeRecordKind Kind) : TypeRecord(Kind)
>>>> {}
>>>>    MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType,
>>>>                           StringRef Name)
>>>> @@ -230,6 +234,7 @@ public:
>>>>  // LF_ARGLIST
>>>>  class ArgListRecord : public TypeRecord {
>>>>  public:
>>>> +  ArgListRecord() = default;
>>>>    explicit ArgListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>
>>>>    ArgListRecord(TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)
>>>> @@ -243,6 +248,7 @@ public:
>>>>  // LF_SUBSTR_LIST
>>>>  class StringListRecord : public TypeRecord {
>>>>  public:
>>>> +  StringListRecord() = default;
>>>>    explicit StringListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>
>>>>    StringListRecord(TypeRecordKind Kind, ArrayRef<TypeIndex> Indices)
>>>> @@ -267,6 +273,7 @@ public:
>>>>    static const uint32_t PointerSizeShift = 13;
>>>>    static const uint32_t PointerSizeMask = 0xFF;
>>>>
>>>> +  PointerRecord() = default;
>>>>    explicit PointerRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>
>>>>    PointerRecord(TypeIndex ReferentType, uint32_t Attrs)
>>>> @@ -341,6 +348,7 @@ private:
>>>>  // LF_NESTTYPE
>>>>  class NestedTypeRecord : public TypeRecord {
>>>>  public:
>>>> +  NestedTypeRecord() = default;
>>>>    explicit NestedTypeRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    NestedTypeRecord(TypeIndex Type, StringRef Name)
>>>>        : TypeRecord(TypeRecordKind::NestedType), Type(Type), Name(Name)
>>>> {}
>>>> @@ -355,6 +363,7 @@ public:
>>>>  // LF_FIELDLIST
>>>>  class FieldListRecord : public TypeRecord {
>>>>  public:
>>>> +  FieldListRecord() = default;
>>>>    explicit FieldListRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    explicit FieldListRecord(ArrayRef<uint8_t> Data)
>>>>        : TypeRecord(TypeRecordKind::FieldList), Data(Data) {}
>>>> @@ -365,6 +374,7 @@ public:
>>>>  // LF_ARRAY
>>>>  class ArrayRecord : public TypeRecord {
>>>>  public:
>>>> +  ArrayRecord() = default;
>>>>    explicit ArrayRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t
>>>> Size,
>>>>                StringRef Name)
>>>> @@ -384,6 +394,7 @@ public:
>>>>
>>>>  class TagRecord : public TypeRecord {
>>>>  protected:
>>>> +  TagRecord() = default;
>>>>    explicit TagRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions
>>>> Options,
>>>>              TypeIndex FieldList, StringRef Name, StringRef UniqueName)
>>>> @@ -416,6 +427,7 @@ public:
>>>>  // LF_CLASS, LF_STRUCTURE, LF_INTERFACE
>>>>  class ClassRecord : public TagRecord {
>>>>  public:
>>>> +  ClassRecord() = default;
>>>>    explicit ClassRecord(TypeRecordKind Kind) : TagRecord(Kind) {}
>>>>    ClassRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions
>>>> Options,
>>>>                TypeIndex FieldList, TypeIndex DerivationList,
>>>> @@ -447,6 +459,7 @@ public:
>>>>
>>>>  // LF_UNION
>>>>  struct UnionRecord : public TagRecord {
>>>> +  UnionRecord() = default;
>>>>    explicit UnionRecord(TypeRecordKind Kind) : TagRecord(Kind) {}
>>>>    UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex
>>>> FieldList,
>>>>                uint64_t Size, StringRef Name, StringRef UniqueName)
>>>> @@ -468,6 +481,7 @@ struct UnionRecord : public TagRecord {
>>>>  // LF_ENUM
>>>>  class EnumRecord : public TagRecord {
>>>>  public:
>>>> +  EnumRecord() = default;
>>>>    explicit EnumRecord(TypeRecordKind Kind) : TagRecord(Kind) {}
>>>>    EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex
>>>> FieldList,
>>>>               StringRef Name, StringRef UniqueName, TypeIndex
>>>> UnderlyingType)
>>>> @@ -482,6 +496,7 @@ public:
>>>>  // LF_BITFIELD
>>>>  class BitFieldRecord : public TypeRecord {
>>>>  public:
>>>> +  BitFieldRecord() = default;
>>>>    explicit BitFieldRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)
>>>>        : TypeRecord(TypeRecordKind::BitField), Type(Type),
>>>> BitSize(BitSize),
>>>> @@ -498,6 +513,7 @@ public:
>>>>  // LF_VTSHAPE
>>>>  class VFTableShapeRecord : public TypeRecord {
>>>>  public:
>>>> +  VFTableShapeRecord() = default;
>>>>    explicit VFTableShapeRecord(TypeRecordKind Kind) : TypeRecord(Kind)
>>>> {}
>>>>    explicit VFTableShapeRecord(ArrayRef<VFTableSlotKind> Slots)
>>>>        : TypeRecord(TypeRecordKind::VFTableShape), SlotsRef(Slots) {}
>>>> @@ -518,6 +534,7 @@ public:
>>>>  // LF_TYPESERVER2
>>>>  class TypeServer2Record : public TypeRecord {
>>>>  public:
>>>> +  TypeServer2Record() = default;
>>>>    explicit TypeServer2Record(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)
>>>>        : TypeRecord(TypeRecordKind::TypeServer2), Guid(Guid), Age(Age),
>>>> @@ -537,6 +554,7 @@ public:
>>>>  // LF_STRING_ID
>>>>  class StringIdRecord : public TypeRecord {
>>>>  public:
>>>> +  StringIdRecord() = default;
>>>>    explicit StringIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    StringIdRecord(TypeIndex Id, StringRef String)
>>>>        : TypeRecord(TypeRecordKind::StringId), Id(Id), String(String) {}
>>>> @@ -551,6 +569,7 @@ public:
>>>>  // LF_FUNC_ID
>>>>  class FuncIdRecord : public TypeRecord {
>>>>  public:
>>>> +  FuncIdRecord() = default;
>>>>    explicit FuncIdRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType,
>>>> StringRef Name)
>>>>        : TypeRecord(TypeRecordKind::FuncId), ParentScope(ParentScope),
>>>> @@ -570,6 +589,7 @@ public:
>>>>  // LF_UDT_SRC_LINE
>>>>  class UdtSourceLineRecord : public TypeRecord {
>>>>  public:
>>>> +  UdtSourceLineRecord() = default;
>>>>    explicit UdtSourceLineRecord(TypeRecordKind Kind) : TypeRecord(Kind)
>>>> {}
>>>>    UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t
>>>> LineNumber)
>>>>        : TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),
>>>> @@ -587,6 +607,7 @@ public:
>>>>  // LF_UDT_MOD_SRC_LINE
>>>>  class UdtModSourceLineRecord : public TypeRecord {
>>>>  public:
>>>> +  UdtModSourceLineRecord() = default;
>>>>    explicit UdtModSourceLineRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    UdtModSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile,
>>>>                           uint32_t LineNumber, uint16_t Module)
>>>> @@ -607,6 +628,7 @@ public:
>>>>  // LF_BUILDINFO
>>>>  class BuildInfoRecord : public TypeRecord {
>>>>  public:
>>>> +  BuildInfoRecord() = default;
>>>>    explicit BuildInfoRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    BuildInfoRecord(ArrayRef<TypeIndex> ArgIndices)
>>>>        : TypeRecord(TypeRecordKind::BuildInfo),
>>>> @@ -619,6 +641,7 @@ public:
>>>>  // LF_VFTABLE
>>>>  class VFTableRecord : public TypeRecord {
>>>>  public:
>>>> +  VFTableRecord() = default;
>>>>    explicit VFTableRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable,
>>>>                  uint32_t VFPtrOffset, StringRef Name,
>>>> @@ -646,7 +669,7 @@ public:
>>>>  // LF_ONEMETHOD
>>>>  class OneMethodRecord : public TypeRecord {
>>>>  public:
>>>> -  OneMethodRecord() : TypeRecord(TypeRecordKind::OneMethod) {}
>>>> +  OneMethodRecord() = default;
>>>>    explicit OneMethodRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    OneMethodRecord(TypeIndex Type, MemberAttributes Attrs, int32_t
>>>> VFTableOffset,
>>>>                    StringRef Name)
>>>> @@ -678,6 +701,7 @@ public:
>>>>  // LF_METHODLIST
>>>>  class MethodOverloadListRecord : public TypeRecord {
>>>>  public:
>>>> +  MethodOverloadListRecord() = default;
>>>>    explicit MethodOverloadListRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    MethodOverloadListRecord(ArrayRef<OneMethodRecord> Methods)
>>>>        : TypeRecord(TypeRecordKind::MethodOverloadList),
>>>> Methods(Methods) {}
>>>> @@ -689,6 +713,7 @@ public:
>>>>  /// For method overload sets.  LF_METHOD
>>>>  class OverloadedMethodRecord : public TypeRecord {
>>>>  public:
>>>> +  OverloadedMethodRecord() = default;
>>>>    explicit OverloadedMethodRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    OverloadedMethodRecord(uint16_t NumOverloads, TypeIndex MethodList,
>>>>                           StringRef Name)
>>>> @@ -706,6 +731,7 @@ public:
>>>>  // LF_MEMBER
>>>>  class DataMemberRecord : public TypeRecord {
>>>>  public:
>>>> +  DataMemberRecord() = default;
>>>>    explicit DataMemberRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    DataMemberRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t
>>>> Offset,
>>>>                     StringRef Name)
>>>> @@ -730,6 +756,7 @@ public:
>>>>  // LF_STMEMBER
>>>>  class StaticDataMemberRecord : public TypeRecord {
>>>>  public:
>>>> +  StaticDataMemberRecord() = default;
>>>>    explicit StaticDataMemberRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    StaticDataMemberRecord(MemberAttributes Attrs, TypeIndex Type,
>>>> StringRef Name)
>>>>        : TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Attrs),
>>>> Type(Type),
>>>> @@ -750,6 +777,7 @@ public:
>>>>  // LF_ENUMERATE
>>>>  class EnumeratorRecord : public TypeRecord {
>>>>  public:
>>>> +  EnumeratorRecord() = default;
>>>>    explicit EnumeratorRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    EnumeratorRecord(MemberAttributes Attrs, APSInt Value, StringRef
>>>> Name)
>>>>        : TypeRecord(TypeRecordKind::Enumerator), Attrs(Attrs),
>>>> @@ -770,6 +798,7 @@ public:
>>>>  // LF_VFUNCTAB
>>>>  class VFPtrRecord : public TypeRecord {
>>>>  public:
>>>> +  VFPtrRecord() = default;
>>>>    explicit VFPtrRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    VFPtrRecord(TypeIndex Type)
>>>>        : TypeRecord(TypeRecordKind::VFPtr), Type(Type) {}
>>>> @@ -782,6 +811,7 @@ public:
>>>>  // LF_BCLASS, LF_BINTERFACE
>>>>  class BaseClassRecord : public TypeRecord {
>>>>  public:
>>>> +  BaseClassRecord() = default;
>>>>    explicit BaseClassRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
>>>>    BaseClassRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t
>>>> Offset)
>>>>        : TypeRecord(TypeRecordKind::BaseClass), Attrs(Attrs),
>>>> Type(Type),
>>>> @@ -802,6 +832,7 @@ public:
>>>>  // LF_VBCLASS, LF_IVBCLASS
>>>>  class VirtualBaseClassRecord : public TypeRecord {
>>>>  public:
>>>> +  VirtualBaseClassRecord() = default;
>>>>    explicit VirtualBaseClassRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    VirtualBaseClassRecord(TypeRecordKind Kind, MemberAttributes Attrs,
>>>>                           TypeIndex BaseType, TypeIndex VBPtrType,
>>>> @@ -831,6 +862,7 @@ public:
>>>>  /// together. The first will end in an LF_INDEX record that points to
>>>> the next.
>>>>  class ListContinuationRecord : public TypeRecord {
>>>>  public:
>>>> +  ListContinuationRecord() = default;
>>>>    explicit ListContinuationRecord(TypeRecordKind Kind) :
>>>> TypeRecord(Kind) {}
>>>>    ListContinuationRecord(TypeIndex ContinuationIndex)
>>>>        : TypeRecord(TypeRecordKind::ListContinuation),
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -37,7 +37,7 @@ public:
>>>>    Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record)
>>>> override;
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    Optional<TypeLeafKind> TypeKind;
>>>>
>>>> Removed: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def?rev=304247&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeRecords.def (removed)
>>>> @@ -1,251 +0,0 @@
>>>> -
>>>> -//===-- CVLeafTypes.def - All CodeView leaf types ---------------*-
>>>> C++ -*-===//
>>>> -//
>>>> -//                     The LLVM Compiler Infrastructure
>>>> -//
>>>> -// This file is distributed under the University of Illinois Open
>>>> Source
>>>> -// License. See LICENSE.TXT for details.
>>>> -//
>>>>
>>>> -//===----------------------------------------------------------------------===//
>>>> -//
>>>> -// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
>>>> -//
>>>>
>>>> -//===----------------------------------------------------------------------===//
>>>> -
>>>> -// If the type is known, then we have a record describing it in
>>>> TypeRecord.h.
>>>> -
>>>> -#ifndef CV_TYPE
>>>> -#define CV_TYPE(lf_ename, value)
>>>> -#endif
>>>> -
>>>> -// If the type is known, then we have a record describing it in
>>>> TypeRecord.h.
>>>> -#ifndef TYPE_RECORD
>>>> -#define TYPE_RECORD(lf_ename, value, name) CV_TYPE(lf_ename, value)
>>>> -#endif
>>>> -
>>>> -#ifndef TYPE_RECORD_ALIAS
>>>> -#define TYPE_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>          \
>>>> -  TYPE_RECORD(lf_ename, value, name)
>>>> -#endif
>>>> -
>>>> -#ifndef MEMBER_RECORD
>>>> -#define MEMBER_RECORD(lf_ename, value, name) TYPE_RECORD(lf_ename,
>>>> value, name)
>>>> -#endif
>>>> -
>>>> -#ifndef MEMBER_RECORD_ALIAS
>>>> -#define MEMBER_RECORD_ALIAS(lf_ename, value, name, alias_name)
>>>>          \
>>>> -  MEMBER_RECORD(lf_ename, value, name)
>>>> -#endif
>>>> -
>>>> -TYPE_RECORD(LF_POINTER, 0x1002, Pointer)
>>>> -TYPE_RECORD(LF_MODIFIER, 0x1001, Modifier)
>>>> -TYPE_RECORD(LF_PROCEDURE, 0x1008, Procedure)
>>>> -TYPE_RECORD(LF_MFUNCTION, 0x1009, MemberFunction)
>>>> -TYPE_RECORD(LF_LABEL, 0x000e, Label)
>>>> -TYPE_RECORD(LF_ARGLIST, 0x1201, ArgList)
>>>> -
>>>> -TYPE_RECORD(LF_FIELDLIST, 0x1203, FieldList)
>>>> -
>>>> -TYPE_RECORD(LF_ARRAY, 0x1503, Array)
>>>> -TYPE_RECORD(LF_CLASS, 0x1504, Class)
>>>> -TYPE_RECORD_ALIAS(LF_STRUCTURE, 0x1505, Struct, Class)
>>>> -TYPE_RECORD_ALIAS(LF_INTERFACE, 0x1519, Interface, Class)
>>>> -TYPE_RECORD(LF_UNION, 0x1506, Union)
>>>> -TYPE_RECORD(LF_ENUM, 0x1507, Enum)
>>>> -TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
>>>> -TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
>>>> -TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
>>>> -
>>>> -TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
>>>> -
>>>> -// Member type records. These are generally not length prefixed, and
>>>> appear
>>>> -// inside of a field list record.
>>>> -MEMBER_RECORD(LF_BCLASS, 0x1400, BaseClass)
>>>> -MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
>>>> -
>>>> -MEMBER_RECORD(LF_VBCLASS, 0x1401, VirtualBaseClass)
>>>> -MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
>>>> -                    VirtualBaseClass)
>>>> -
>>>> -MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
>>>> -MEMBER_RECORD(LF_STMEMBER, 0x150e, StaticDataMember)
>>>> -MEMBER_RECORD(LF_METHOD, 0x150f, OverloadedMethod)
>>>> -MEMBER_RECORD(LF_MEMBER, 0x150d, DataMember)
>>>> -MEMBER_RECORD(LF_NESTTYPE, 0x1510, NestedType)
>>>> -MEMBER_RECORD(LF_ONEMETHOD, 0x1511, OneMethod)
>>>> -MEMBER_RECORD(LF_ENUMERATE, 0x1502, Enumerator)
>>>> -MEMBER_RECORD(LF_INDEX, 0x1404, ListContinuation)
>>>> -
>>>> -// ID leaf records. Subsequent leaf types may be referenced from
>>>> .debug$S.
>>>> -TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
>>>> -TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
>>>> -TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
>>>> -TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
>>>> -TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
>>>> -TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
>>>> -TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)
>>>> -
>>>> -
>>>> -TYPE_RECORD(LF_METHODLIST, 0x1206, MethodOverloadList)
>>>> -
>>>> -
>>>> -// 16 bit type records.
>>>> -CV_TYPE(LF_MODIFIER_16t, 0x0001)
>>>> -CV_TYPE(LF_POINTER_16t, 0x0002)
>>>> -CV_TYPE(LF_ARRAY_16t, 0x0003)
>>>> -CV_TYPE(LF_CLASS_16t, 0x0004)
>>>> -CV_TYPE(LF_STRUCTURE_16t, 0x0005)
>>>> -CV_TYPE(LF_UNION_16t, 0x0006)
>>>> -CV_TYPE(LF_ENUM_16t, 0x0007)
>>>> -CV_TYPE(LF_PROCEDURE_16t, 0x0008)
>>>> -CV_TYPE(LF_MFUNCTION_16t, 0x0009)
>>>> -CV_TYPE(LF_COBOL0_16t, 0x000b)
>>>> -CV_TYPE(LF_COBOL1, 0x000c)
>>>> -CV_TYPE(LF_BARRAY_16t, 0x000d)
>>>> -CV_TYPE(LF_NULLLEAF, 0x000f) // LF_NULL
>>>> -CV_TYPE(LF_NOTTRAN, 0x0010)
>>>> -CV_TYPE(LF_DIMARRAY_16t, 0x0011)
>>>> -CV_TYPE(LF_VFTPATH_16t, 0x0012)
>>>> -CV_TYPE(LF_PRECOMP_16t, 0x0013)
>>>> -CV_TYPE(LF_ENDPRECOMP, 0x0014)
>>>> -CV_TYPE(LF_OEM_16t, 0x0015)
>>>> -CV_TYPE(LF_TYPESERVER_ST, 0x0016)
>>>> -
>>>> -CV_TYPE(LF_SKIP_16t, 0x0200)
>>>> -CV_TYPE(LF_ARGLIST_16t, 0x0201)
>>>> -CV_TYPE(LF_DEFARG_16t, 0x0202)
>>>> -CV_TYPE(LF_LIST, 0x0203)
>>>> -CV_TYPE(LF_FIELDLIST_16t, 0x0204)
>>>> -CV_TYPE(LF_DERIVED_16t, 0x0205)
>>>> -CV_TYPE(LF_BITFIELD_16t, 0x0206)
>>>> -CV_TYPE(LF_METHODLIST_16t, 0x0207)
>>>> -CV_TYPE(LF_DIMCONU_16t, 0x0208)
>>>> -CV_TYPE(LF_DIMCONLU_16t, 0x0209)
>>>> -CV_TYPE(LF_DIMVARU_16t, 0x020a)
>>>> -CV_TYPE(LF_DIMVARLU_16t, 0x020b)
>>>> -CV_TYPE(LF_REFSYM, 0x020c)
>>>> -
>>>> -// 16 bit member types. Generally not length prefixed.
>>>> -CV_TYPE(LF_BCLASS_16t, 0x0400)
>>>> -CV_TYPE(LF_VBCLASS_16t, 0x0401)
>>>> -CV_TYPE(LF_IVBCLASS_16t, 0x0402)
>>>> -CV_TYPE(LF_ENUMERATE_ST, 0x0403)
>>>> -CV_TYPE(LF_FRIENDFCN_16t, 0x0404)
>>>> -CV_TYPE(LF_INDEX_16t, 0x0405)
>>>> -CV_TYPE(LF_MEMBER_16t, 0x0406)
>>>> -CV_TYPE(LF_STMEMBER_16t, 0x0407)
>>>> -CV_TYPE(LF_METHOD_16t, 0x0408)
>>>> -CV_TYPE(LF_NESTTYPE_16t, 0x0409)
>>>> -CV_TYPE(LF_VFUNCTAB_16t, 0x040a)
>>>> -CV_TYPE(LF_FRIENDCLS_16t, 0x040b)
>>>> -CV_TYPE(LF_ONEMETHOD_16t, 0x040c)
>>>> -CV_TYPE(LF_VFUNCOFF_16t, 0x040d)
>>>> -
>>>> -CV_TYPE(LF_TI16_MAX, 0x1000)
>>>> -
>>>> -CV_TYPE(LF_ARRAY_ST, 0x1003)
>>>> -CV_TYPE(LF_CLASS_ST, 0x1004)
>>>> -CV_TYPE(LF_STRUCTURE_ST, 0x1005)
>>>> -CV_TYPE(LF_UNION_ST, 0x1006)
>>>> -CV_TYPE(LF_ENUM_ST, 0x1007)
>>>> -CV_TYPE(LF_COBOL0, 0x100a)
>>>> -CV_TYPE(LF_BARRAY, 0x100b)
>>>> -CV_TYPE(LF_DIMARRAY_ST, 0x100c)
>>>> -CV_TYPE(LF_VFTPATH, 0x100d)
>>>> -CV_TYPE(LF_PRECOMP_ST, 0x100e)
>>>> -CV_TYPE(LF_OEM, 0x100f)
>>>> -CV_TYPE(LF_ALIAS_ST, 0x1010)
>>>> -CV_TYPE(LF_OEM2, 0x1011)
>>>> -
>>>> -CV_TYPE(LF_SKIP, 0x1200)
>>>> -CV_TYPE(LF_DEFARG_ST, 0x1202)
>>>> -CV_TYPE(LF_DERIVED, 0x1204)
>>>> -CV_TYPE(LF_DIMCONU, 0x1207)
>>>> -CV_TYPE(LF_DIMCONLU, 0x1208)
>>>> -CV_TYPE(LF_DIMVARU, 0x1209)
>>>> -CV_TYPE(LF_DIMVARLU, 0x120a)
>>>> -
>>>> -// Member type records. These are generally not length prefixed, and
>>>> appear
>>>> -// inside of a field list record.
>>>> -CV_TYPE(LF_FRIENDFCN_ST, 0x1403)
>>>> -CV_TYPE(LF_MEMBER_ST, 0x1405)
>>>> -CV_TYPE(LF_STMEMBER_ST, 0x1406)
>>>> -CV_TYPE(LF_METHOD_ST, 0x1407)
>>>> -CV_TYPE(LF_NESTTYPE_ST, 0x1408)
>>>> -CV_TYPE(LF_FRIENDCLS, 0x140a)
>>>> -CV_TYPE(LF_ONEMETHOD_ST, 0x140b)
>>>> -CV_TYPE(LF_VFUNCOFF, 0x140c)
>>>> -CV_TYPE(LF_NESTTYPEEX_ST, 0x140d)
>>>> -CV_TYPE(LF_MEMBERMODIFY_ST, 0x140e)
>>>> -CV_TYPE(LF_MANAGED_ST, 0x140f)
>>>> -
>>>> -CV_TYPE(LF_ST_MAX, 0x1500)
>>>> -CV_TYPE(LF_TYPESERVER, 0x1501)
>>>> -CV_TYPE(LF_DIMARRAY, 0x1508)
>>>> -CV_TYPE(LF_PRECOMP, 0x1509)
>>>> -CV_TYPE(LF_ALIAS, 0x150a)
>>>> -CV_TYPE(LF_DEFARG, 0x150b)
>>>> -CV_TYPE(LF_FRIENDFCN, 0x150c)
>>>> -CV_TYPE(LF_NESTTYPEEX, 0x1512)
>>>> -CV_TYPE(LF_MEMBERMODIFY, 0x1513)
>>>> -CV_TYPE(LF_MANAGED, 0x1514)
>>>> -CV_TYPE(LF_STRIDED_ARRAY, 0x1516)
>>>> -CV_TYPE(LF_HLSL, 0x1517)
>>>> -CV_TYPE(LF_MODIFIER_EX, 0x1518)
>>>> -CV_TYPE(LF_VECTOR, 0x151b)
>>>> -CV_TYPE(LF_MATRIX, 0x151c)
>>>> -
>>>> -// ID leaf records. Subsequent leaf types may be referenced from
>>>> .debug$S.
>>>> -
>>>> -// Numeric leaf types. These are generally contained in other records,
>>>> and not
>>>> -// encountered in the main type stream.
>>>> -
>>>> -CV_TYPE(LF_NUMERIC, 0x8000)
>>>> -CV_TYPE(LF_CHAR, 0x8000)
>>>> -CV_TYPE(LF_SHORT, 0x8001)
>>>> -CV_TYPE(LF_USHORT, 0x8002)
>>>> -CV_TYPE(LF_LONG, 0x8003)
>>>> -CV_TYPE(LF_ULONG, 0x8004)
>>>> -CV_TYPE(LF_REAL32, 0x8005)
>>>> -CV_TYPE(LF_REAL64, 0x8006)
>>>> -CV_TYPE(LF_REAL80, 0x8007)
>>>> -CV_TYPE(LF_REAL128, 0x8008)
>>>> -CV_TYPE(LF_QUADWORD, 0x8009)
>>>> -CV_TYPE(LF_UQUADWORD, 0x800a)
>>>> -CV_TYPE(LF_REAL48, 0x800b)
>>>> -CV_TYPE(LF_COMPLEX32, 0x800c)
>>>> -CV_TYPE(LF_COMPLEX64, 0x800d)
>>>> -CV_TYPE(LF_COMPLEX80, 0x800e)
>>>> -CV_TYPE(LF_COMPLEX128, 0x800f)
>>>> -CV_TYPE(LF_VARSTRING, 0x8010)
>>>> -CV_TYPE(LF_OCTWORD, 0x8017)
>>>> -CV_TYPE(LF_UOCTWORD, 0x8018)
>>>> -CV_TYPE(LF_DECIMAL, 0x8019)
>>>> -CV_TYPE(LF_DATE, 0x801a)
>>>> -CV_TYPE(LF_UTF8STRING, 0x801b)
>>>> -CV_TYPE(LF_REAL16, 0x801c)
>>>> -
>>>> -// Padding bytes. These are emitted into alignment bytes in the type
>>>> stream.
>>>> -
>>>> -CV_TYPE(LF_PAD0, 0xf0)
>>>> -CV_TYPE(LF_PAD1, 0xf1)
>>>> -CV_TYPE(LF_PAD2, 0xf2)
>>>> -CV_TYPE(LF_PAD3, 0xf3)
>>>> -CV_TYPE(LF_PAD4, 0xf4)
>>>> -CV_TYPE(LF_PAD5, 0xf5)
>>>> -CV_TYPE(LF_PAD6, 0xf6)
>>>> -CV_TYPE(LF_PAD7, 0xf7)
>>>> -CV_TYPE(LF_PAD8, 0xf8)
>>>> -CV_TYPE(LF_PAD9, 0xf9)
>>>> -CV_TYPE(LF_PAD10, 0xfa)
>>>> -CV_TYPE(LF_PAD11, 0xfb)
>>>> -CV_TYPE(LF_PAD12, 0xfc)
>>>> -CV_TYPE(LF_PAD13, 0xfd)
>>>> -CV_TYPE(LF_PAD14, 0xfe)
>>>> -CV_TYPE(LF_PAD15, 0xff)
>>>> -
>>>> -#undef CV_TYPE
>>>> -#undef TYPE_RECORD
>>>> -#undef TYPE_RECORD_ALIAS
>>>> -#undef MEMBER_RECORD
>>>> -#undef MEMBER_RECORD_ALIAS
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeSerializer.h Tue May
>>>> 30 16:53:05 2017
>>>> @@ -106,7 +106,7 @@ public:
>>>>      return visitKnownMemberImpl<Name##Record>(CVR, Record);
>>>>         \
>>>>    }
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    template <typename RecordKind>
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h Tue
>>>> May 30 16:53:05 2017
>>>> @@ -13,8 +13,8 @@
>>>>  #include "llvm/ADT/ArrayRef.h"
>>>>  #include "llvm/DebugInfo/CodeView/CodeView.h"
>>>>  #include "llvm/DebugInfo/CodeView/TypeIndex.h"
>>>> -#include "llvm/DebugInfo/CodeView/TypeSerializer.h"
>>>>  #include "llvm/DebugInfo/CodeView/TypeRecord.h"
>>>> +#include "llvm/DebugInfo/CodeView/TypeSerializer.h"
>>>>  #include "llvm/Support/Allocator.h"
>>>>  #include "llvm/Support/Error.h"
>>>>  #include <algorithm>
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
>>>> (original)
>>>> +++
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -94,7 +94,7 @@ public:
>>>>    }
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    template <typename T> Error visitKnownRecordImpl(CVType &CVR, T
>>>> &Record) {
>>>>
>>>> Modified:
>>>> llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
>>>> Tue May 30 16:53:05 2017
>>>> @@ -58,7 +58,11 @@ public:
>>>>
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>> +#undef TYPE_RECORD
>>>> +#undef TYPE_RECORD_ALIAS
>>>> +#undef MEMBER_RECORD
>>>> +#undef MEMBER_RECORD_ALIAS
>>>>  };
>>>>
>>>>  } // end namespace codeview
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h
>>>> (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/RawConstants.h Tue May
>>>> 30 16:53:05 2017
>>>> @@ -12,7 +12,6 @@
>>>>
>>>>  #include "llvm/ADT/BitmaskEnum.h"
>>>>  #include "llvm/DebugInfo/CodeView/CodeView.h"
>>>> -
>>>>  #include <cstdint>
>>>>
>>>>  namespace llvm {
>>>>
>>>> Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h (original)
>>>> +++ llvm/trunk/include/llvm/DebugInfo/PDB/Native/TpiHashing.h Tue May
>>>> 30 16:53:05 2017
>>>> @@ -38,7 +38,7 @@ public:
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>  #define MEMBER_RECORD(EnumName, EnumVal, Name)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>
>>>>  private:
>>>>    template <typename RecordKind>
>>>>
>>>> Added: llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h?rev=304248&view=auto
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h (added)
>>>> +++ llvm/trunk/include/llvm/ObjectYAML/CodeViewYAML.h Tue May 30
>>>> 16:53:05 2017
>>>> @@ -0,0 +1,141 @@
>>>> +//===- CodeViewYAML.cpp - CodeView YAMLIO implementation
>>>> ------------------===//
>>>> +//
>>>> +//                     The LLVM Compiler Infrastructure
>>>> +//
>>>> +// This file is distributed under the University of Illinois Open
>>>> Source
>>>> +// License. See LICENSE.TXT for details.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +//
>>>> +// This file defines classes for handling the YAML representation of
>>>> CodeView
>>>> +// Debug Info.
>>>> +//
>>>>
>>>> +//===----------------------------------------------------------------------===//
>>>> +
>>>> +#ifndef LLVM_OBJECTYAML_CODEVIEWYAML_H
>>>> +#define LLVM_OBJECTYAML_CODEVIEWYAML_H
>>>> +
>>>> +#include "llvm/DebugInfo/CodeView/CodeView.h"
>>>> +#include "llvm/DebugInfo/CodeView/TypeDeserializer.h"
>>>> +#include "llvm/DebugInfo/CodeView/TypeRecord.h"
>>>> +#include "llvm/DebugInfo/CodeView/TypeSerializer.h"
>>>> +#include "llvm/DebugInfo/CodeView/TypeTableBuilder.h"
>>>> +#include "llvm/ObjectYAML/YAML.h"
>>>> +
>>>> +namespace llvm {
>>>> +namespace CodeViewYAML {
>>>> +
>>>> +namespace detail {
>>>> +struct MemberRecordBase;
>>>> +struct LeafRecordBase;
>>>> +}
>>>> +
>>>> +struct SourceLineEntry {
>>>> +  uint32_t Offset;
>>>> +  uint32_t LineStart;
>>>> +  uint32_t EndDelta;
>>>> +  bool IsStatement;
>>>> +};
>>>> +
>>>> +struct SourceColumnEntry {
>>>> +  uint16_t StartColumn;
>>>> +  uint16_t EndColumn;
>>>> +};
>>>> +
>>>> +struct SourceLineBlock {
>>>> +  StringRef FileName;
>>>> +  std::vector<SourceLineEntry> Lines;
>>>> +  std::vector<SourceColumnEntry> Columns;
>>>> +};
>>>> +
>>>> +struct HexFormattedString {
>>>> +  std::vector<uint8_t> Bytes;
>>>> +};
>>>> +
>>>> +struct SourceFileChecksumEntry {
>>>> +  StringRef FileName;
>>>> +  codeview::FileChecksumKind Kind;
>>>> +  HexFormattedString ChecksumBytes;
>>>> +};
>>>> +
>>>> +struct SourceLineInfo {
>>>> +  uint32_t RelocOffset;
>>>> +  uint32_t RelocSegment;
>>>> +  codeview::LineFlags Flags;
>>>> +  uint32_t CodeSize;
>>>> +
>>>> +  std::vector<SourceLineBlock> Blocks;
>>>> +};
>>>> +
>>>> +struct InlineeSite {
>>>> +  uint32_t Inlinee;
>>>> +  StringRef FileName;
>>>> +  uint32_t SourceLineNum;
>>>> +  std::vector<StringRef> ExtraFiles;
>>>> +};
>>>> +
>>>> +struct InlineeInfo {
>>>> +  bool HasExtraFiles;
>>>> +  std::vector<InlineeSite> Sites;
>>>> +};
>>>> +
>>>> +struct SourceFileInfo {
>>>> +  std::vector<SourceFileChecksumEntry> FileChecksums;
>>>> +  std::vector<SourceLineInfo> LineFragments;
>>>> +  std::vector<InlineeInfo> Inlinees;
>>>> +};
>>>> +
>>>> +struct MemberRecord {
>>>> +  std::shared_ptr<detail::MemberRecordBase> Member;
>>>> +};
>>>> +
>>>> +struct LeafRecord {
>>>> +  std::shared_ptr<detail::LeafRecordBase> Leaf;
>>>> +
>>>> +  codeview::CVType toCodeViewRecord(BumpPtrAllocator &Allocator) const;
>>>> +  static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType
>>>> Type);
>>>> +};
>>>> +
>>>> +} // namespace CodeViewYAML
>>>> +} // namespace llvm
>>>> +
>>>> +LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::TypeIndex, false)
>>>> +LLVM_YAML_DECLARE_SCALAR_TRAITS(CodeViewYAML::HexFormattedString,
>>>> false)
>>>> +LLVM_YAML_DECLARE_SCALAR_TRAITS(APSInt, false)
>>>> +
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineEntry)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceColumnEntry)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceFileChecksumEntry)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineInfo)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceLineBlock)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::SourceFileInfo)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::InlineeInfo)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::InlineeSite)
>>>> +
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)
>>>> +LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)
>>>> +
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::TypeLeafKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerToMemberRepresentation)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::VFTableSlotKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::CallingConvention)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::PointerMode)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::HfaKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::MemberAccess)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::MethodKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::WindowsRTClassKind)
>>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::LabelType)
>>>>
>>> +LLVM_YAML_DECLARE_ENUM_TRAITS(codeview::FileChecksumKind)
>>>> +
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::PointerOptions)
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::LineFlags)
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::ModifierOptions)
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::FunctionOptions)
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::ClassOptions)
>>>> +LLVM_YAML_DECLARE_BITSET_TRAITS(codeview::MethodOptions)
>>>> +
>>>> +LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)
>>>> +LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)
>>>> +
>>>> +#endif
>>>>
>>>> Modified: llvm/trunk/include/llvm/Support/YAMLTraits.h
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/YAMLTraits.h?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/include/llvm/Support/YAMLTraits.h (original)
>>>> +++ llvm/trunk/include/llvm/Support/YAMLTraits.h Tue May 30 16:53:05
>>>> 2017
>>>> @@ -1606,6 +1606,44 @@ template <typename T> struct StdMapStrin
>>>>    }
>>>>         \
>>>>    }
>>>>
>>>> +#define LLVM_YAML_DECLARE_MAPPING_TRAITS(Type)
>>>>          \
>>>> +  namespace llvm {
>>>>          \
>>>> +  namespace yaml {
>>>>          \
>>>> +  template <> struct MappingTraits<Type> {
>>>>          \
>>>> +    static void mapping(IO &IO, Type &Obj);
>>>>         \
>>>> +  };
>>>>          \
>>>> +  }
>>>>         \
>>>> +  }
>>>> +
>>>> +#define LLVM_YAML_DECLARE_ENUM_TRAITS(Type)
>>>>         \
>>>> +  namespace llvm {
>>>>          \
>>>> +  namespace yaml {
>>>>          \
>>>> +  template <> struct ScalarEnumerationTraits<Type> {
>>>>          \
>>>> +    static void enumeration(IO &io, Type &Value);
>>>>         \
>>>> +  };
>>>>          \
>>>> +  }
>>>>         \
>>>> +  }
>>>> +
>>>> +#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type)
>>>>         \
>>>> +  namespace llvm {
>>>>          \
>>>> +  namespace yaml {
>>>>          \
>>>> +  template <> struct ScalarBitSetTraits<Type> {
>>>>         \
>>>> +    static void bitset(IO &IO, Type &Options);
>>>>          \
>>>> +  };
>>>>          \
>>>> +  }
>>>>         \
>>>> +  }
>>>> +
>>>> +#define LLVM_YAML_DECLARE_SCALAR_TRAITS(Type, MustQuote)
>>>>          \
>>>> +  namespace llvm {
>>>>          \
>>>> +  namespace yaml {
>>>>          \
>>>> +  template <> struct ScalarTraits<Type> {
>>>>         \
>>>> +    static void output(const Type &Value, void *ctx, llvm::raw_ostream
>>>> &Out);  \
>>>> +    static StringRef input(StringRef Scalar, void *ctxt, Type
>>>> &Value);         \
>>>> +    static bool mustQuote(StringRef) { return MustQuote; }
>>>>          \
>>>> +  };
>>>>          \
>>>> +  }
>>>>         \
>>>> +  }
>>>> +
>>>>  /// Utility for declaring that a std::vector of a particular type
>>>>  /// should be considered a YAML document list.
>>>>  #define LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(_type)
>>>>          \
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp Tue May 30
>>>> 16:53:05 2017
>>>> @@ -46,7 +46,7 @@ Error CVSymbolVisitor::visitSymbolRecord
>>>>    }
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>         \
>>>>    SYMBOL_RECORD(EnumVal, EnumVal, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>    }
>>>>
>>>>    if (auto EC = Callbacks.visitSymbolEnd(Record))
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/CodeView/CVTypeVisitor.cpp Tue May 30
>>>> 16:53:05 2017
>>>> @@ -71,7 +71,7 @@ static Error visitMemberRecord(CVMemberR
>>>>    MEMBER_RECORD(EnumVal, EnumVal, AliasName)
>>>>  #define TYPE_RECORD(EnumName, EnumVal, Name)
>>>
>>>
>>>>  #define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>
>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>    }
>>>>
>>>>    if (auto EC = Callbacks.visitMemberEnd(Record))
>>>> @@ -155,7 +155,7 @@ Error CVTypeVisitor::finishVisitation(CV
>>>>    TYPE_RECORD(EnumVal, EnumVal, AliasName)
>>>
>>>
>>>>  #define MEMBER_RECORD(EnumName, EnumVal, Name)
>>>>  #define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>    }
>>>>
>>>>    if (auto EC = Callbacks.visitTypeEnd(Record))
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/CodeView/EnumTables.cpp Tue May 30
>>>> 16:53:05 2017
>>>> @@ -20,13 +20,13 @@ using namespace codeview;
>>>>
>>>>  static const EnumEntry<SymbolKind> SymbolTypeNames[] = {
>>>>  #define CV_SYMBOL(enum, val) {#enum, enum},
>>>> -#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>  #undef CV_SYMBOL
>>>>  };
>>>>
>>>>  static const EnumEntry<TypeLeafKind> TypeLeafNames[] = {
>>>>  #define CV_TYPE(name, val) {#name, name},
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
>>>>  #undef CV_TYPE
>>>>  };
>>>>
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/CodeView/SymbolDumper.cpp Tue May 30
>>>> 16:53:05 2017
>>>> @@ -41,7 +41,7 @@ public:
>>>
>>>
>>>>  #define SYMBOL_RECORD(EnumName, EnumVal, Name)
>>>>          \
>>>>    Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;
>>>>  #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
>>>>
>>> -#include "llvm/DebugInfo/CodeView/CVSymbolTypes.def"
>>>> +#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
>>>>
>>>>    Error visitSymbolBegin(CVSymbol &Record) override;
>>>>    Error visitSymbolEnd(CVSymbol &Record) override;
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp?rev=304248&r1=304247&r2=304248&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp Tue May 30
>>>> 16:53:05 2017
>>>> @@ -26,7 +26,7 @@ using namespace llvm::codeview;
>>>>
>>>>  static const EnumEntry<TypeLeafKind> LeafTypeNames[] = {
>>>>  #define CV_TYPE(enum, val) {#enum, enum},
>>>> -#include "llvm/DebugInfo/CodeView/TypeRecords.def"
>>>> +#include "l
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170531/fa1d8780/attachment-0001.html>


More information about the llvm-commits mailing list