From: Eric Christopher Date: Fri, 2 Aug 2019 01:05:47 +0000 (+0000) Subject: Temporarily revert "Changes to improve CodeView debug info type record inline comments" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0927bf13d70ceb495dcf91c08667141344d503eb;p=llvm Temporarily revert "Changes to improve CodeView debug info type record inline comments" due to a sanitizer failure. This reverts commit 367623. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367640 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h b/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h index 105f77c7acf..70e13c38abf 100644 --- a/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h +++ b/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h @@ -33,9 +33,6 @@ public: virtual void EmitIntValue(uint64_t Value, unsigned Size) = 0; virtual void EmitBinaryData(StringRef Data) = 0; virtual void AddComment(const Twine &T) = 0; - virtual void AddRawComment(const Twine &T) = 0; - virtual bool isVerboseAsm() = 0; - virtual StringRef getTypeName(TypeIndex TI) = 0; virtual ~CodeViewRecordStreamer() = default; }; @@ -209,11 +206,6 @@ public: return 0; } - void emitRawComment(const Twine &T) { - if (isStreaming()) - Streamer->AddRawComment(T); - } - private: void emitEncodedSignedInteger(const int64_t &Value, const Twine &Comment = ""); @@ -233,7 +225,7 @@ private: } void emitComment(const Twine &Comment) { - if (isStreaming() && Streamer->isVerboseAsm()) { + if (isStreaming()) { Twine TComment(Comment); if (!TComment.isTriviallyEmpty()) Streamer->AddComment(TComment); diff --git a/include/llvm/DebugInfo/CodeView/EnumTables.h b/include/llvm/DebugInfo/CodeView/EnumTables.h index 270cd4b8330..ed126ed9e2f 100644 --- a/include/llvm/DebugInfo/CodeView/EnumTables.h +++ b/include/llvm/DebugInfo/CodeView/EnumTables.h @@ -37,17 +37,6 @@ ArrayRef> getThunkOrdinalNames(); ArrayRef> getTrampolineNames(); ArrayRef> getImageSectionCharacteristicNames(); -ArrayRef> getClassOptionNames(); -ArrayRef> getMemberAccessNames(); -ArrayRef> getMethodOptionNames(); -ArrayRef> getMemberKindNames(); -ArrayRef> getPtrKindNames(); -ArrayRef> getPtrModeNames(); -ArrayRef> getPtrMemberRepNames(); -ArrayRef> getTypeModifierNames(); -ArrayRef> getCallingConventions(); -ArrayRef> getFunctionOptionEnum(); -ArrayRef> getLabelTypeEnum(); } // end namespace codeview } // end namespace llvm diff --git a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp index f4514335cb3..b3dabca0a8a 100644 --- a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -98,8 +98,7 @@ using namespace llvm::codeview; namespace { class CVMCAdapter : public CodeViewRecordStreamer { public: - CVMCAdapter(MCStreamer &OS, TypeCollection &TypeTable) - : OS(&OS), TypeTable(TypeTable) {} + CVMCAdapter(MCStreamer &OS) : OS(&OS) {} void EmitBytes(StringRef Data) { OS->EmitBytes(Data); } @@ -111,24 +110,8 @@ public: void AddComment(const Twine &T) { OS->AddComment(T); } - void AddRawComment(const Twine &T) { OS->emitRawComment(T); } - - bool isVerboseAsm() { return OS->isVerboseAsm(); } - - StringRef getTypeName(TypeIndex TI) { - StringRef TypeName; - if (!TI.isNoneType()) { - if (TI.isSimple()) - TypeName = TypeIndex::simpleTypeName(TI); - else - TypeName = TypeTable.getTypeName(TI); - } - return TypeName; - } - private: MCStreamer *OS = nullptr; - TypeCollection &TypeTable; }; } // namespace @@ -634,6 +617,13 @@ emitNullTerminatedSymbolName(MCStreamer &OS, StringRef S, OS.EmitBytes(NullTerminatedString); } +static StringRef getTypeLeafName(TypeLeafKind TypeKind) { + for (const EnumEntry &EE : getTypeLeafNames()) + if (EE.Value == TypeKind) + return EE.Name; + return ""; +} + void CodeViewDebug::emitTypeInformation() { if (TypeTable.empty()) return; @@ -650,11 +640,11 @@ void CodeViewDebug::emitTypeInformation() { } TypeTableCollection Table(TypeTable.records()); - TypeVisitorCallbackPipeline Pipeline; SmallString<512> CommentBlock; raw_svector_ostream CommentOS(CommentBlock); std::unique_ptr SP; std::unique_ptr TDV; + TypeVisitorCallbackPipeline Pipeline; if (OS.isVerboseAsm()) { // To construct block comment describing the type record for readability. @@ -665,7 +655,7 @@ void CodeViewDebug::emitTypeInformation() { } // To emit type record using Codeview MCStreamer adapter - CVMCAdapter CVMCOS(OS, Table); + CVMCAdapter CVMCOS(OS); TypeRecordMapping typeMapping(CVMCOS); Pipeline.addCallbackToPipeline(typeMapping); @@ -675,6 +665,16 @@ void CodeViewDebug::emitTypeInformation() { CVType Record = Table.getType(*B); CommentBlock.clear(); + + auto RecordLen = Record.length(); + auto RecordKind = Record.kind(); + if (OS.isVerboseAsm()) + CVMCOS.AddComment("Record length"); + CVMCOS.EmitIntValue(RecordLen - 2, 2); + if (OS.isVerboseAsm()) + CVMCOS.AddComment("Record kind: " + getTypeLeafName(RecordKind)); + CVMCOS.EmitIntValue(RecordKind, sizeof(RecordKind)); + Error E = codeview::visitTypeRecord(Record, *B, Pipeline); if (E) { diff --git a/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp b/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp index 73ff57b9bbd..092099bb0a1 100644 --- a/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp +++ b/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp @@ -126,11 +126,7 @@ Error CodeViewRecordIO::mapByteVectorTail(std::vector &Bytes, Error CodeViewRecordIO::mapInteger(TypeIndex &TypeInd, const Twine &Comment) { if (isStreaming()) { - StringRef TypeNameStr = Streamer->getTypeName(TypeInd); - if (!TypeNameStr.empty()) - emitComment(Comment + ": " + TypeNameStr); - else - emitComment(Comment); + emitComment(Comment); Streamer->EmitIntValue(TypeInd.getIndex(), sizeof(TypeInd.getIndex())); incrStreamedLen(sizeof(TypeInd.getIndex())); } else if (isWriting()) { diff --git a/lib/DebugInfo/CodeView/EnumTables.cpp b/lib/DebugInfo/CodeView/EnumTables.cpp index 82f6713a88f..54e68ae4ea9 100644 --- a/lib/DebugInfo/CodeView/EnumTables.cpp +++ b/lib/DebugInfo/CodeView/EnumTables.cpp @@ -300,128 +300,6 @@ static const EnumEntry CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ), CV_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE)}; -static const EnumEntry ClassOptionNames[] = { - CV_ENUM_CLASS_ENT(ClassOptions, Packed), - CV_ENUM_CLASS_ENT(ClassOptions, HasConstructorOrDestructor), - CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedOperator), - CV_ENUM_CLASS_ENT(ClassOptions, Nested), - CV_ENUM_CLASS_ENT(ClassOptions, ContainsNestedClass), - CV_ENUM_CLASS_ENT(ClassOptions, HasOverloadedAssignmentOperator), - CV_ENUM_CLASS_ENT(ClassOptions, HasConversionOperator), - CV_ENUM_CLASS_ENT(ClassOptions, ForwardReference), - CV_ENUM_CLASS_ENT(ClassOptions, Scoped), - CV_ENUM_CLASS_ENT(ClassOptions, HasUniqueName), - CV_ENUM_CLASS_ENT(ClassOptions, Sealed), - CV_ENUM_CLASS_ENT(ClassOptions, Intrinsic), -}; - -static const EnumEntry MemberAccessNames[] = { - CV_ENUM_CLASS_ENT(MemberAccess, None), - CV_ENUM_CLASS_ENT(MemberAccess, Private), - CV_ENUM_CLASS_ENT(MemberAccess, Protected), - CV_ENUM_CLASS_ENT(MemberAccess, Public), -}; - -static const EnumEntry MethodOptionNames[] = { - CV_ENUM_CLASS_ENT(MethodOptions, Pseudo), - CV_ENUM_CLASS_ENT(MethodOptions, NoInherit), - CV_ENUM_CLASS_ENT(MethodOptions, NoConstruct), - CV_ENUM_CLASS_ENT(MethodOptions, CompilerGenerated), - CV_ENUM_CLASS_ENT(MethodOptions, Sealed), -}; - -static const EnumEntry MemberKindNames[] = { - CV_ENUM_CLASS_ENT(MethodKind, Vanilla), - CV_ENUM_CLASS_ENT(MethodKind, Virtual), - CV_ENUM_CLASS_ENT(MethodKind, Static), - CV_ENUM_CLASS_ENT(MethodKind, Friend), - CV_ENUM_CLASS_ENT(MethodKind, IntroducingVirtual), - CV_ENUM_CLASS_ENT(MethodKind, PureVirtual), - CV_ENUM_CLASS_ENT(MethodKind, PureIntroducingVirtual), -}; - -static const EnumEntry PtrKindNames[] = { - CV_ENUM_CLASS_ENT(PointerKind, Near16), - CV_ENUM_CLASS_ENT(PointerKind, Far16), - CV_ENUM_CLASS_ENT(PointerKind, Huge16), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegment), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnValue), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentValue), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnAddress), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnSegmentAddress), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnType), - CV_ENUM_CLASS_ENT(PointerKind, BasedOnSelf), - CV_ENUM_CLASS_ENT(PointerKind, Near32), - CV_ENUM_CLASS_ENT(PointerKind, Far32), - CV_ENUM_CLASS_ENT(PointerKind, Near64), -}; - -static const EnumEntry PtrModeNames[] = { - CV_ENUM_CLASS_ENT(PointerMode, Pointer), - CV_ENUM_CLASS_ENT(PointerMode, LValueReference), - CV_ENUM_CLASS_ENT(PointerMode, PointerToDataMember), - CV_ENUM_CLASS_ENT(PointerMode, PointerToMemberFunction), - CV_ENUM_CLASS_ENT(PointerMode, RValueReference), -}; - -static const EnumEntry PtrMemberRepNames[] = { - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, Unknown), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceData), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, MultipleInheritanceData), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, VirtualInheritanceData), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralData), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, SingleInheritanceFunction), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, - MultipleInheritanceFunction), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, - VirtualInheritanceFunction), - CV_ENUM_CLASS_ENT(PointerToMemberRepresentation, GeneralFunction), -}; - -static const EnumEntry TypeModifierNames[] = { - CV_ENUM_CLASS_ENT(ModifierOptions, Const), - CV_ENUM_CLASS_ENT(ModifierOptions, Volatile), - CV_ENUM_CLASS_ENT(ModifierOptions, Unaligned), -}; - -static const EnumEntry CallingConventions[] = { - CV_ENUM_CLASS_ENT(CallingConvention, NearC), - CV_ENUM_CLASS_ENT(CallingConvention, FarC), - CV_ENUM_CLASS_ENT(CallingConvention, NearPascal), - CV_ENUM_CLASS_ENT(CallingConvention, FarPascal), - CV_ENUM_CLASS_ENT(CallingConvention, NearFast), - CV_ENUM_CLASS_ENT(CallingConvention, FarFast), - CV_ENUM_CLASS_ENT(CallingConvention, NearStdCall), - CV_ENUM_CLASS_ENT(CallingConvention, FarStdCall), - CV_ENUM_CLASS_ENT(CallingConvention, NearSysCall), - CV_ENUM_CLASS_ENT(CallingConvention, FarSysCall), - CV_ENUM_CLASS_ENT(CallingConvention, ThisCall), - CV_ENUM_CLASS_ENT(CallingConvention, MipsCall), - CV_ENUM_CLASS_ENT(CallingConvention, Generic), - CV_ENUM_CLASS_ENT(CallingConvention, AlphaCall), - CV_ENUM_CLASS_ENT(CallingConvention, PpcCall), - CV_ENUM_CLASS_ENT(CallingConvention, SHCall), - CV_ENUM_CLASS_ENT(CallingConvention, ArmCall), - CV_ENUM_CLASS_ENT(CallingConvention, AM33Call), - CV_ENUM_CLASS_ENT(CallingConvention, TriCall), - CV_ENUM_CLASS_ENT(CallingConvention, SH5Call), - CV_ENUM_CLASS_ENT(CallingConvention, M32RCall), - CV_ENUM_CLASS_ENT(CallingConvention, ClrCall), - CV_ENUM_CLASS_ENT(CallingConvention, Inline), - CV_ENUM_CLASS_ENT(CallingConvention, NearVector), -}; - -static const EnumEntry FunctionOptionEnum[] = { - CV_ENUM_CLASS_ENT(FunctionOptions, CxxReturnUdt), - CV_ENUM_CLASS_ENT(FunctionOptions, Constructor), - CV_ENUM_CLASS_ENT(FunctionOptions, ConstructorWithVirtualBases), -}; - -static const EnumEntry LabelTypeEnum[] = { - CV_ENUM_CLASS_ENT(LabelType, Near), - CV_ENUM_CLASS_ENT(LabelType, Far), -}; - namespace llvm { namespace codeview { @@ -501,49 +379,5 @@ getImageSectionCharacteristicNames() { return makeArrayRef(ImageSectionCharacteristicNames); } -ArrayRef> getClassOptionNames() { - return makeArrayRef(ClassOptionNames); -} - -ArrayRef> getMemberAccessNames() { - return makeArrayRef(MemberAccessNames); -} - -ArrayRef> getMethodOptionNames() { - return makeArrayRef(MethodOptionNames); -} - -ArrayRef> getMemberKindNames() { - return makeArrayRef(MemberKindNames); -} - -ArrayRef> getPtrKindNames() { - return makeArrayRef(PtrKindNames); -} - -ArrayRef> getPtrModeNames() { - return makeArrayRef(PtrModeNames); -} - -ArrayRef> getPtrMemberRepNames() { - return makeArrayRef(PtrMemberRepNames); -} - -ArrayRef> getTypeModifierNames() { - return makeArrayRef(TypeModifierNames); -} - -ArrayRef> getCallingConventions() { - return makeArrayRef(CallingConventions); -} - -ArrayRef> getFunctionOptionEnum() { - return makeArrayRef(FunctionOptionEnum); -} - -ArrayRef> getLabelTypeEnum() { - return makeArrayRef(LabelTypeEnum); -} - } // end namespace codeview } // end namespace llvm diff --git a/lib/DebugInfo/CodeView/TypeRecordMapping.cpp b/lib/DebugInfo/CodeView/TypeRecordMapping.cpp index 721eca08a27..b81ae4bff3f 100644 --- a/lib/DebugInfo/CodeView/TypeRecordMapping.cpp +++ b/lib/DebugInfo/CodeView/TypeRecordMapping.cpp @@ -7,124 +7,24 @@ //===----------------------------------------------------------------------===// #include "llvm/DebugInfo/CodeView/TypeRecordMapping.h" -#include "llvm/ADT/StringExtras.h" -#include "llvm/DebugInfo/CodeView/EnumTables.h" using namespace llvm; using namespace llvm::codeview; -namespace { - #define error(X) \ if (auto EC = X) \ return EC; -static const EnumEntry LeafTypeNames[] = { -#define CV_TYPE(enum, val) {#enum, enum}, -#include "llvm/DebugInfo/CodeView/CodeViewTypes.def" -}; - -static StringRef getLeafTypeName(TypeLeafKind LT) { - switch (LT) { -#define TYPE_RECORD(ename, value, name) \ - case ename: \ - return #name; -#include "llvm/DebugInfo/CodeView/CodeViewTypes.def" - default: - break; - } - return "UnknownLeaf"; -} - -template -static bool compEnumNames(const EnumEntry &lhs, const EnumEntry &rhs) { - return lhs.Name < rhs.Name; -} - -template -static StringRef getFlagNames(CodeViewRecordIO &IO, T Value, - ArrayRef> Flags) { - if (!IO.isStreaming()) - return ""; - typedef EnumEntry FlagEntry; - typedef SmallVector FlagVector; - FlagVector SetFlags; - for (const auto &Flag : Flags) { - if (Flag.Value == 0) - continue; - if ((Value & Flag.Value) == Flag.Value) { - SetFlags.push_back(Flag); - } - } - - llvm::sort(SetFlags, &compEnumNames); - - SmallString<128> FlagLabel; - bool FirstOcc = true; - for (const auto &Flag : SetFlags) { - if (FirstOcc) - FirstOcc = false; - else - FlagLabel += (" | "); - - FlagLabel += (Flag.Name + " (0x" + utohexstr(Flag.Value) + ")").str(); - } - - if (!FlagLabel.empty()) { - SmallString<128> LabelWithBraces(" ( "); - LabelWithBraces += (FlagLabel + " )").str(); - return LabelWithBraces.str(); - } else - return FlagLabel.str(); -} - -template -static StringRef getEnumName(CodeViewRecordIO &IO, T Value, - ArrayRef> EnumValues) { - if (!IO.isStreaming()) - return ""; - StringRef Name; - for (const auto &EnumItem : EnumValues) { - if (EnumItem.Value == Value) { - Name = EnumItem.Name; - break; - } - } - - return Name; -} - -static StringRef getMemberAttributes(CodeViewRecordIO &IO, MemberAccess Access, - MethodKind Kind, MethodOptions Options) { - if (!IO.isStreaming()) - return ""; - SmallString<256> AccessSpecifier = - getEnumName(IO, uint8_t(Access), makeArrayRef(getMemberAccessNames())); - SmallString<256> MemberAttrs(AccessSpecifier); - if (Kind != MethodKind::Vanilla) { - SmallString<256> MethodKind = - getEnumName(IO, unsigned(Kind), makeArrayRef(getMemberKindNames())); - MemberAttrs += (", " + MethodKind).str(); - } - if (Options != MethodOptions::None) { - SmallString<256> MethodOptions = getFlagNames( - IO, unsigned(Options), makeArrayRef(getMethodOptionNames())); - MemberAttrs += (", " + MethodOptions).str(); - } - return MemberAttrs.str(); -} - +namespace { struct MapOneMethodRecord { explicit MapOneMethodRecord(bool IsFromOverloadList) : IsFromOverloadList(IsFromOverloadList) {} Error operator()(CodeViewRecordIO &IO, OneMethodRecord &Method) const { - StringRef Attrs = getMemberAttributes( - IO, Method.getAccess(), Method.getMethodKind(), Method.getOptions()); - error(IO.mapInteger(Method.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Method.Attrs.Attrs, "AccessSpecifier")); if (IsFromOverloadList) { uint16_t Padding = 0; - error(IO.mapInteger(Padding)); + error(IO.mapInteger(Padding, "Padding")); } error(IO.mapInteger(Method.Type, "Type")); if (Method.isIntroducingVirtual()) { @@ -141,7 +41,7 @@ struct MapOneMethodRecord { private: bool IsFromOverloadList; }; -} // namespace +} static Error mapNameAndUniqueName(CodeViewRecordIO &IO, StringRef &Name, StringRef &UniqueName, bool HasUniqueName) { @@ -183,6 +83,18 @@ static Error mapNameAndUniqueName(CodeViewRecordIO &IO, StringRef &Name, return Error::success(); } +static StringRef getLeafTypeName(TypeLeafKind LT) { + switch (LT) { +#define TYPE_RECORD(ename, value, name) \ + case ename: \ + return #ename; +#include "llvm/DebugInfo/CodeView/CodeViewTypes.def" + default: + break; + } + return "UnknownLeaf"; +} + Error TypeRecordMapping::visitTypeBegin(CVType &CVR) { assert(!TypeKind.hasValue() && "Already in a type mapping!"); assert(!MemberKind.hasValue() && "Already in a member mapping!"); @@ -196,22 +108,10 @@ Error TypeRecordMapping::visitTypeBegin(CVType &CVR) { MaxLen = MaxRecordLength - sizeof(RecordPrefix); error(IO.beginRecord(MaxLen)); TypeKind = CVR.kind(); - - if (IO.isStreaming()) { - auto RecordKind = CVR.kind(); - uint16_t RecordLen = CVR.length() - 2; - SmallString<128> RecordKindName = - getEnumName(IO, unsigned(RecordKind), makeArrayRef(LeafTypeNames)); - error(IO.mapInteger(RecordLen, "Record length")); - error(IO.mapEnum(RecordKind, "Record kind: " + RecordKindName)); - } return Error::success(); } Error TypeRecordMapping::visitTypeBegin(CVType &CVR, TypeIndex Index) { - if (IO.isStreaming()) - IO.emitRawComment(" " + getLeafTypeName(CVR.kind()) + " (0x" + - utohexstr(Index.getIndex()) + ")"); return visitTypeBegin(CVR); } @@ -240,13 +140,8 @@ Error TypeRecordMapping::visitMemberBegin(CVMemberRecord &Record) { MemberKind = Record.Kind; if (IO.isStreaming()) { - SmallString<128> MemberKindName = getLeafTypeName(Record.Kind); - MemberKindName += - (" ( " + - getEnumName(IO, unsigned(Record.Kind), makeArrayRef(LeafTypeNames)) + - " )") - .str(); - error(IO.mapEnum(Record.Kind, "Member kind: " + MemberKindName)); + error(IO.mapEnum(Record.Kind, + "Member kind: " + getLeafTypeName(Record.Kind))); } return Error::success(); } @@ -266,24 +161,16 @@ Error TypeRecordMapping::visitMemberEnd(CVMemberRecord &Record) { } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, ModifierRecord &Record) { - SmallString<256> ModifierNames = - getFlagNames(IO, static_cast(Record.Modifiers), - makeArrayRef(getTypeModifierNames())); error(IO.mapInteger(Record.ModifiedType, "ModifiedType")); - error(IO.mapEnum(Record.Modifiers, "Modifiers" + ModifierNames)); + error(IO.mapEnum(Record.Modifiers, "Modifiers")); return Error::success(); } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, ProcedureRecord &Record) { - SmallString<256> CallingConvName = getEnumName( - IO, uint8_t(Record.CallConv), makeArrayRef(getCallingConventions())); - SmallString<256> FuncOptionNames = - getFlagNames(IO, static_cast(Record.Options), - makeArrayRef(getFunctionOptionEnum())); error(IO.mapInteger(Record.ReturnType, "ReturnType")); - error(IO.mapEnum(Record.CallConv, "CallingConvention: " + CallingConvName)); - error(IO.mapEnum(Record.Options, "FunctionOptions" + FuncOptionNames)); + error(IO.mapEnum(Record.CallConv, "CallingConvention")); + error(IO.mapEnum(Record.Options, "FunctionOptions")); error(IO.mapInteger(Record.ParameterCount, "NumParameters")); error(IO.mapInteger(Record.ArgumentList, "ArgListType")); @@ -292,16 +179,11 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, Error TypeRecordMapping::visitKnownRecord(CVType &CVR, MemberFunctionRecord &Record) { - SmallString<256> CallingConvName = getEnumName( - IO, uint8_t(Record.CallConv), makeArrayRef(getCallingConventions())); - SmallString<256> FuncOptionNames = - getFlagNames(IO, static_cast(Record.Options), - makeArrayRef(getFunctionOptionEnum())); error(IO.mapInteger(Record.ReturnType, "ReturnType")); error(IO.mapInteger(Record.ClassType, "ClassType")); error(IO.mapInteger(Record.ThisType, "ThisType")); - error(IO.mapEnum(Record.CallConv, "CallingConvention: " + CallingConvName)); - error(IO.mapEnum(Record.Options, "FunctionOptions" + FuncOptionNames)); + error(IO.mapEnum(Record.CallConv, "CallingConvention")); + error(IO.mapEnum(Record.Options, "FunctionOptions")); error(IO.mapInteger(Record.ParameterCount, "NumParameters")); error(IO.mapInteger(Record.ArgumentList, "ArgListType")); error(IO.mapInteger(Record.ThisPointerAdjustment, "ThisAdjustment")); @@ -332,40 +214,8 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, PointerRecord &Record) { - - SmallString<128> Attr("Attrs: "); - - if (IO.isStreaming()) { - SmallString<128> PtrType = getEnumName( - IO, unsigned(Record.getPointerKind()), makeArrayRef(getPtrKindNames())); - Attr += ("[ Type: " + PtrType).str(); - - SmallString<128> PtrMode = getEnumName(IO, unsigned(Record.getMode()), - makeArrayRef(getPtrModeNames())); - Attr += (", Mode: " + PtrMode).str(); - - auto PtrSizeOf = Record.getSize(); - Attr += ", SizeOf: " + itostr(PtrSizeOf); - - if (auto PtrIsFlat = Record.isFlat()) - Attr += ", isFlat"; - if (auto PtrIsConst = Record.isConst()) - Attr += ", isConst"; - if (auto PtrIsVolatile = Record.isVolatile()) - Attr += ", isVolatile"; - if (auto PtrIsUnaligned = Record.isUnaligned()) - Attr += ", isUnaligned"; - if (auto PtrIsRestrict = Record.isRestrict()) - Attr += ", isRestricted"; - if (auto PtrIsLValueReferenceThisPtr = Record.isLValueReferenceThisPtr()) - Attr += ", isThisPtr&"; - if (auto PtrIsRValueReferenceThisPtr = Record.isRValueReferenceThisPtr()) - Attr += ", isThisPtr&&"; - Attr += " ]"; - } - error(IO.mapInteger(Record.ReferentType, "PointeeType")); - error(IO.mapInteger(Record.Attrs, Attr)); + error(IO.mapInteger(Record.Attrs, "Attributes")); if (Record.isPointerToMember()) { if (IO.isReading()) @@ -373,10 +223,7 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, PointerRecord &Record) { MemberPointerInfo &M = *Record.MemberInfo; error(IO.mapInteger(M.ContainingType, "ClassType")); - SmallString<256> PtrMemberGetRepresentation = getEnumName( - IO, uint16_t(M.Representation), makeArrayRef(getPtrMemberRepNames())); - error(IO.mapEnum(M.Representation, - "Representation: " + PtrMemberGetRepresentation)); + error(IO.mapEnum(M.Representation, "Representation")); } return Error::success(); @@ -396,11 +243,8 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, ClassRecord &Record) { (CVR.kind() == TypeLeafKind::LF_CLASS) || (CVR.kind() == TypeLeafKind::LF_INTERFACE)); - SmallString<256> PropertiesNames = - getFlagNames(IO, static_cast(Record.Options), - makeArrayRef(getClassOptionNames())); error(IO.mapInteger(Record.MemberCount, "MemberCount")); - error(IO.mapEnum(Record.Options, "Properties" + PropertiesNames)); + error(IO.mapEnum(Record.Options, "Properties")); error(IO.mapInteger(Record.FieldList, "FieldList")); error(IO.mapInteger(Record.DerivationList, "DerivedFrom")); error(IO.mapInteger(Record.VTableShape, "VShape")); @@ -412,11 +256,8 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, ClassRecord &Record) { } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, UnionRecord &Record) { - SmallString<256> PropertiesNames = - getFlagNames(IO, static_cast(Record.Options), - makeArrayRef(getClassOptionNames())); error(IO.mapInteger(Record.MemberCount, "MemberCount")); - error(IO.mapEnum(Record.Options, "Properties" + PropertiesNames)); + error(IO.mapEnum(Record.Options, "Properties")); error(IO.mapInteger(Record.FieldList, "FieldList")); error(IO.mapEncodedInteger(Record.Size, "SizeOf")); error(mapNameAndUniqueName(IO, Record.Name, Record.UniqueName, @@ -426,11 +267,8 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, UnionRecord &Record) { } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, EnumRecord &Record) { - SmallString<256> PropertiesNames = - getFlagNames(IO, static_cast(Record.Options), - makeArrayRef(getClassOptionNames())); error(IO.mapInteger(Record.MemberCount, "NumEnumerators")); - error(IO.mapEnum(Record.Options, "Properties" + PropertiesNames)); + error(IO.mapEnum(Record.Options, "Properties")); error(IO.mapInteger(Record.UnderlyingType, "UnderlyingType")); error(IO.mapInteger(Record.FieldList, "FieldListType")); error(mapNameAndUniqueName(IO, Record.Name, Record.UniqueName, @@ -580,17 +418,13 @@ Error TypeRecordMapping::visitKnownRecord(CVType &CVR, } Error TypeRecordMapping::visitKnownRecord(CVType &CVR, LabelRecord &Record) { - SmallString<256> ModeName = - getEnumName(IO, uint16_t(Record.Mode), makeArrayRef(getLabelTypeEnum())); - error(IO.mapEnum(Record.Mode, "Mode: " + ModeName)); + error(IO.mapEnum(Record.Mode, "Mode")); return Error::success(); } Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, BaseClassRecord &Record) { - StringRef Attrs = getMemberAttributes( - IO, Record.getAccess(), MethodKind::Vanilla, MethodOptions::None); - error(IO.mapInteger(Record.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Record.Attrs.Attrs, "AccessSpecifier")); error(IO.mapInteger(Record.Type, "BaseType")); error(IO.mapEncodedInteger(Record.Offset, "BaseOffset")); @@ -599,9 +433,7 @@ Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, EnumeratorRecord &Record) { - StringRef Attrs = getMemberAttributes( - IO, Record.getAccess(), MethodKind::Vanilla, MethodOptions::None); - error(IO.mapInteger(Record.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Record.Attrs.Attrs)); // FIXME: Handle full APInt such as __int128. error(IO.mapEncodedInteger(Record.Value, "EnumValue")); @@ -612,9 +444,7 @@ Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, DataMemberRecord &Record) { - StringRef Attrs = getMemberAttributes( - IO, Record.getAccess(), MethodKind::Vanilla, MethodOptions::None); - error(IO.mapInteger(Record.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Record.Attrs.Attrs, "AccessSpecifier")); error(IO.mapInteger(Record.Type, "Type")); error(IO.mapEncodedInteger(Record.FieldOffset, "FieldOffset")); error(IO.mapStringZ(Record.Name, "Name")); @@ -651,9 +481,7 @@ Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, StaticDataMemberRecord &Record) { - StringRef Attrs = getMemberAttributes( - IO, Record.getAccess(), MethodKind::Vanilla, MethodOptions::None); - error(IO.mapInteger(Record.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Record.Attrs.Attrs, "AccessSpecifier")); error(IO.mapInteger(Record.Type, "Type")); error(IO.mapStringZ(Record.Name, "Name")); @@ -663,9 +491,7 @@ Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, Error TypeRecordMapping::visitKnownMember(CVMemberRecord &CVR, VirtualBaseClassRecord &Record) { - StringRef Attrs = getMemberAttributes( - IO, Record.getAccess(), MethodKind::Vanilla, MethodOptions::None); - error(IO.mapInteger(Record.Attrs.Attrs, "Attrs: " + Attrs)); + error(IO.mapInteger(Record.Attrs.Attrs, "AccessSpecifier")); error(IO.mapInteger(Record.BaseType, "BaseType")); error(IO.mapInteger(Record.VBPtrType, "VBPtrType")); error(IO.mapEncodedInteger(Record.VBPtrOffset, "VBPtrOffset")); diff --git a/test/DebugInfo/COFF/class-options-common.ll b/test/DebugInfo/COFF/class-options-common.ll index 0134d38002d..46350552e07 100644 --- a/test/DebugInfo/COFF/class-options-common.ll +++ b/test/DebugInfo/COFF/class-options-common.ll @@ -1,6 +1,5 @@ ; RUN: llc < %s -filetype=obj | llvm-readobj - --codeview | FileCheck %s ; RUN: llc < %s | llvm-mc -filetype=obj --triple=x86_64-windows | llvm-readobj - --codeview | FileCheck %s -; RUN: llc < %s | FileCheck %s --check-prefix=ASM-INLINE-COMMENTS ; ; Command to generate function-options.ll ; $ clang++ class-options-common.cpp -S -emit-llvm -g -gcodeview -o class-options-common.ll @@ -652,28 +651,6 @@ ; CHECK: } ; CHECK: ] -; ASM-INLINE-COMMENTS: # MethodOverloadList (0x1088) -; ASM-INLINE-COMMENTS: .short 0x12 # Record length -; ASM-INLINE-COMMENTS: .short 0x1206 # Record kind: LF_METHODLIST -; ASM-INLINE-COMMENTS: .short 0x3 # Method -; ASM-INLINE-COMMENTS: # Attrs: Public -; ASM-INLINE-COMMENTS: .short 0x0 -; ASM-INLINE-COMMENTS: .long 0x1083 # Type: void Foo::() -; ASM-INLINE-COMMENTS: .short 0x3 # Attrs: Public -; ASM-INLINE-COMMENTS: .short 0x0 -; ASM-INLINE-COMMENTS: .long 0x1087 # Type: void Foo::(const Foo&) -; ASM-INLINE-COMMENTS: # MethodOverloadList (0x1088) { -; ASM-INLINE-COMMENTS: # TypeLeafKind: LF_METHODLIST (0x1206) -; ASM-INLINE-COMMENTS: # Method [ -; ASM-INLINE-COMMENTS: # AccessSpecifier: Public (0x3) -; ASM-INLINE-COMMENTS: # Type: void Foo::() (0x1083) -; ASM-INLINE-COMMENTS: # ] -; ASM-INLINE-COMMENTS: # Method [ -; ASM-INLINE-COMMENTS: # AccessSpecifier: Public (0x3) -; ASM-INLINE-COMMENTS: # Type: void Foo::(const Foo&) (0x1087) -; ASM-INLINE-COMMENTS: # ] -; ASM-INLINE-COMMENTS: # } - ; ModuleID = 'class-options-common.cpp' source_filename = "class-options.cpp" diff --git a/test/DebugInfo/COFF/types-basic.ll b/test/DebugInfo/COFF/types-basic.ll index 71179a2937d..f2013ae0703 100644 --- a/test/DebugInfo/COFF/types-basic.ll +++ b/test/DebugInfo/COFF/types-basic.ll @@ -350,13 +350,12 @@ ; ASM: .section .debug$T,"dr" ; ASM: .p2align 2 ; ASM: .long 4 # Debug section magic -; ASM: # ArgList (0x1000) ; ASM: .short 0x12 # Record length ; ASM: .short 0x1201 # Record kind: LF_ARGLIST ; ASM: .long 0x3 # NumArgs -; ASM: .long 0x40 # Argument: float -; ASM: .long 0x41 # Argument: double -; ASM: .long 0x13 # Argument: __int64 +; ASM: .long 0x40 # Argument +; ASM: .long 0x41 # Argument +; ASM: .long 0x13 # Argument ; ASM: # ArgList (0x1000) { ; ASM: # TypeLeafKind: LF_ARGLIST (0x1201) ; ASM: # NumArgs: 3 @@ -366,14 +365,13 @@ ; ASM: # ArgType: __int64 (0x13) ; ASM: # ] ; ASM: # } -; ASM: # Procedure (0x1001) ; ASM: .short 0xe # Record length ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE -; ASM: .long 0x3 # ReturnType: void -; ASM: .byte 0x0 # CallingConvention: NearC +; ASM: .long 0x3 # ReturnType +; ASM: .byte 0x0 # CallingConvention ; ASM: .byte 0x0 # FunctionOptions ; ASM: .short 0x3 # NumParameters -; ASM: .long 0x1000 # ArgListType: (float, double, __int64) +; ASM: .long 0x1000 # ArgListType ; ASM: # Procedure (0x1001) { ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008) ; ASM: # ReturnType: void (0x3) @@ -383,11 +381,10 @@ ; ASM: # NumParameters: 3 ; ASM: # ArgListType: (float, double, __int64) (0x1000) ; ASM: # } -; ASM: # FuncId (0x1002) ; ASM: .short 0xe # Record length ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID ; ASM: .long 0x0 # ParentScope -; ASM: .long 0x1001 # FunctionType: void (float, double, __int64) +; ASM: .long 0x1001 # FunctionType ; ASM: .asciz "f" # Name ; ASM: .byte 242 ; ASM: .byte 241 @@ -397,11 +394,10 @@ ; ASM: # FunctionType: void (float, double, __int64) (0x1001) ; ASM: # Name: f ; ASM: # } -; ASM: # Modifier (0x1003) ; ASM: .short 0xa # Record length ; ASM: .short 0x1001 # Record kind: LF_MODIFIER -; ASM: .long 0x74 # ModifiedType: int -; ASM: .short 0x1 # Modifiers ( Const (0x1) ) +; ASM: .long 0x74 # ModifiedType +; ASM: .short 0x1 # Modifiers ; ASM: .byte 242 ; ASM: .byte 241 ; ASM: # Modifier (0x1003) { @@ -411,11 +407,10 @@ ; ASM: # Const (0x1) ; ASM: # ] ; ASM: # } -; ASM: # Pointer (0x1004) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1003 # PointeeType: const int -; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ] +; ASM: .long 0x1003 # PointeeType +; ASM: .long 0x1000c # Attributes ; ASM: # Pointer (0x1004) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: const int (0x1003) @@ -430,11 +425,10 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # Struct (0x1005) ; ASM: .short 0x16 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x80 # Properties ( ForwardReference (0x80) ) +; ASM: .short 0x80 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape @@ -452,13 +446,12 @@ ; ASM: # SizeOf: 0 ; ASM: # Name: A ; ASM: # } -; ASM: # Pointer (0x1006) ; ASM: .short 0x12 # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x74 # PointeeType: int -; ASM: .long 0x804c # Attrs: [ Type: Near64, Mode: PointerToDataMember, SizeOf: 4 ] -; ASM: .long 0x1005 # ClassType: A -; ASM: .short 0x4 # Representation: GeneralData +; ASM: .long 0x74 # PointeeType +; ASM: .long 0x804c # Attributes +; ASM: .long 0x1005 # ClassType +; ASM: .short 0x4 # Representation ; ASM: .byte 242 ; ASM: .byte 241 ; ASM: # Pointer (0x1006) { @@ -477,11 +470,10 @@ ; ASM: # ClassType: A (0x1005) ; ASM: # Representation: GeneralData (0x4) ; ASM: # } -; ASM: # Pointer (0x1007) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1005 # PointeeType: A -; ASM: .long 0x1040c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ] +; ASM: .long 0x1005 # PointeeType +; ASM: .long 0x1040c # Attributes ; ASM: # Pointer (0x1007) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: A (0x1005) @@ -496,7 +488,6 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # ArgList (0x1008) ; ASM: .short 0x6 # Record length ; ASM: .short 0x1201 # Record kind: LF_ARGLIST ; ASM: .long 0x0 # NumArgs @@ -506,16 +497,15 @@ ; ASM: # Arguments [ ; ASM: # ] ; ASM: # } -; ASM: # MemberFunction (0x1009) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1009 # Record kind: LF_MFUNCTION -; ASM: .long 0x3 # ReturnType: void -; ASM: .long 0x1005 # ClassType: A -; ASM: .long 0x1007 # ThisType: A* const -; ASM: .byte 0x0 # CallingConvention: NearC +; ASM: .long 0x3 # ReturnType +; ASM: .long 0x1005 # ClassType +; ASM: .long 0x1007 # ThisType +; ASM: .byte 0x0 # CallingConvention ; ASM: .byte 0x0 # FunctionOptions ; ASM: .short 0x0 # NumParameters -; ASM: .long 0x1008 # ArgListType: () +; ASM: .long 0x1008 # ArgListType ; ASM: .long 0x0 # ThisAdjustment ; ASM: # MemberFunction (0x1009) { ; ASM: # TypeLeafKind: LF_MFUNCTION (0x1009) @@ -529,17 +519,16 @@ ; ASM: # ArgListType: () (0x1008) ; ASM: # ThisAdjustment: 0 ; ASM: # } -; ASM: # FieldList (0x100A) ; ASM: .short 0x1e # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "a" # Name -; ASM: .short 0x1511 # Member kind: OneMethod ( LF_ONEMETHOD ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x1009 # Type: void A::() +; ASM: .short 0x1511 # Member kind: LF_ONEMETHOD +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x1009 # Type ; ASM: .asciz "A::f" # Name ; ASM: .byte 243 ; ASM: .byte 242 @@ -560,12 +549,11 @@ ; ASM: # Name: A::f ; ASM: # } ; ASM: # } -; ASM: # Struct (0x100B) ; ASM: .short 0x16 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x2 # MemberCount ; ASM: .short 0x0 # Properties -; ASM: .long 0x100a # FieldList: +; ASM: .long 0x100a # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape ; ASM: .short 0x4 # SizeOf @@ -581,7 +569,6 @@ ; ASM: # SizeOf: 4 ; ASM: # Name: A ; ASM: # } -; ASM: # StringId (0x100C) ; ASM: .short 0x1e # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -591,11 +578,10 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: D:\src\llvm\build\t.cpp ; ASM: # } -; ASM: # UdtSourceLine (0x100D) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x100b # UDT: A -; ASM: .long 0x100c # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x100b # UDT +; ASM: .long 0x100c # SourceFile ; ASM: .long 0x1 # LineNumber ; ASM: # UdtSourceLine (0x100D) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -603,13 +589,12 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x100C) ; ASM: # LineNumber: 1 ; ASM: # } -; ASM: # Pointer (0x100E) ; ASM: .short 0x12 # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1009 # PointeeType: void A::() -; ASM: .long 0x1006c # Attrs: [ Type: Near64, Mode: PointerToMemberFunction, SizeOf: 8 ] -; ASM: .long 0x1005 # ClassType: A -; ASM: .short 0x8 # Representation: GeneralFunction +; ASM: .long 0x1009 # PointeeType +; ASM: .long 0x1006c # Attributes +; ASM: .long 0x1005 # ClassType +; ASM: .short 0x8 # Representation ; ASM: .byte 242 ; ASM: .byte 241 ; ASM: # Pointer (0x100E) { @@ -628,11 +613,10 @@ ; ASM: # ClassType: A (0x1005) ; ASM: # Representation: GeneralFunction (0x8) ; ASM: # } -; ASM: # Modifier (0x100F) ; ASM: .short 0xa # Record length ; ASM: .short 0x1001 # Record kind: LF_MODIFIER -; ASM: .long 0x3 # ModifiedType: void -; ASM: .short 0x1 # Modifiers ( Const (0x1) ) +; ASM: .long 0x3 # ModifiedType +; ASM: .short 0x1 # Modifiers ; ASM: .byte 242 ; ASM: .byte 241 ; ASM: # Modifier (0x100F) { @@ -642,11 +626,10 @@ ; ASM: # Const (0x1) ; ASM: # ] ; ASM: # } -; ASM: # Pointer (0x1010) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x100f # PointeeType: const void -; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ] +; ASM: .long 0x100f # PointeeType +; ASM: .long 0x1000c # Attributes ; ASM: # Pointer (0x1010) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: const void (0x100F) @@ -661,14 +644,13 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # Procedure (0x1011) ; ASM: .short 0xe # Record length ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE -; ASM: .long 0x3 # ReturnType: void -; ASM: .byte 0x0 # CallingConvention: NearC +; ASM: .long 0x3 # ReturnType +; ASM: .byte 0x0 # CallingConvention ; ASM: .byte 0x0 # FunctionOptions ; ASM: .short 0x0 # NumParameters -; ASM: .long 0x1008 # ArgListType: () +; ASM: .long 0x1008 # ArgListType ; ASM: # Procedure (0x1011) { ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008) ; ASM: # ReturnType: void (0x3) @@ -678,11 +660,10 @@ ; ASM: # NumParameters: 0 ; ASM: # ArgListType: () (0x1008) ; ASM: # } -; ASM: # FuncId (0x1012) ; ASM: .short 0x16 # Record length ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID ; ASM: .long 0x0 # ParentScope -; ASM: .long 0x1011 # FunctionType: void () +; ASM: .long 0x1011 # FunctionType ; ASM: .asciz "CharTypes" # Name ; ASM: .byte 242 ; ASM: .byte 241 @@ -692,7 +673,6 @@ ; ASM: # FunctionType: void () (0x1011) ; ASM: # Name: CharTypes ; ASM: # } -; ASM: # StringId (0x1013) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -704,7 +684,6 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: D:\src\llvm\build ; ASM: # } -; ASM: # StringId (0x1014) ; ASM: .short 0xe # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -716,13 +695,12 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: t.cpp ; ASM: # } -; ASM: # BuildInfo (0x1015) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1603 # Record kind: LF_BUILDINFO ; ASM: .short 0x5 # NumArgs -; ASM: .long 0x1013 # Argument: D:\src\llvm\build +; ASM: .long 0x1013 # Argument ; ASM: .long 0x0 # Argument -; ASM: .long 0x1014 # Argument: t.cpp +; ASM: .long 0x1014 # Argument ; ASM: .long 0x0 # Argument ; ASM: .long 0x0 # Argument ; ASM: .byte 242 diff --git a/test/DebugInfo/COFF/types-data-members.ll b/test/DebugInfo/COFF/types-data-members.ll index e13e38a475b..a63dce29076 100644 --- a/test/DebugInfo/COFF/types-data-members.ll +++ b/test/DebugInfo/COFF/types-data-members.ll @@ -393,7 +393,6 @@ ; ASM: .section .debug$T,"dr" ; ASM: .p2align 2 ; ASM: .long 4 # Debug section magic -; ASM: # ArgList (0x1000) ; ASM: .short 0x6 # Record length ; ASM: .short 0x1201 # Record kind: LF_ARGLIST ; ASM: .long 0x0 # NumArgs @@ -403,14 +402,13 @@ ; ASM: # Arguments [ ; ASM: # ] ; ASM: # } -; ASM: # Procedure (0x1001) ; ASM: .short 0xe # Record length ; ASM: .short 0x1008 # Record kind: LF_PROCEDURE -; ASM: .long 0x3 # ReturnType: void -; ASM: .byte 0x0 # CallingConvention: NearC +; ASM: .long 0x3 # ReturnType +; ASM: .byte 0x0 # CallingConvention ; ASM: .byte 0x0 # FunctionOptions ; ASM: .short 0x0 # NumParameters -; ASM: .long 0x1000 # ArgListType: () +; ASM: .long 0x1000 # ArgListType ; ASM: # Procedure (0x1001) { ; ASM: # TypeLeafKind: LF_PROCEDURE (0x1008) ; ASM: # ReturnType: void (0x3) @@ -420,11 +418,10 @@ ; ASM: # NumParameters: 0 ; ASM: # ArgListType: () (0x1000) ; ASM: # } -; ASM: # FuncId (0x1002) ; ASM: .short 0x16 # Record length ; ASM: .short 0x1601 # Record kind: LF_FUNC_ID ; ASM: .long 0x0 # ParentScope -; ASM: .long 0x1001 # FunctionType: void () +; ASM: .long 0x1001 # FunctionType ; ASM: .asciz "UseTypes" # Name ; ASM: .byte 243 ; ASM: .byte 242 @@ -435,11 +432,10 @@ ; ASM: # FunctionType: void () (0x1001) ; ASM: # Name: UseTypes ; ASM: # } -; ASM: # Struct (0x1003) ; ASM: .short 0x2a # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x280 # Properties ( ForwardReference (0x80) | HasUniqueName (0x200) ) +; ASM: .short 0x280 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape @@ -462,11 +458,10 @@ ; ASM: # Name: Struct ; ASM: # LinkageName: .?AUStruct@@ ; ASM: # } -; ASM: # Modifier (0x1004) ; ASM: .short 0xa # Record length ; ASM: .short 0x1001 # Record kind: LF_MODIFIER -; ASM: .long 0x74 # ModifiedType: int -; ASM: .short 0x1 # Modifiers ( Const (0x1) ) +; ASM: .long 0x74 # ModifiedType +; ASM: .short 0x1 # Modifiers ; ASM: .byte 242 ; ASM: .byte 241 ; ASM: # Modifier (0x1004) { @@ -476,36 +471,35 @@ ; ASM: # Const (0x1) ; ASM: # ] ; ASM: # } -; ASM: # FieldList (0x1005) ; ASM: .short 0x3e # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "s1" # Name ; ASM: .byte 243 ; ASM: .byte 242 ; ASM: .byte 241 -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x4 # FieldOffset ; ASM: .asciz "s2" # Name ; ASM: .byte 243 ; ASM: .byte 242 ; ASM: .byte 241 -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x8 # FieldOffset ; ASM: .asciz "s3" # Name ; ASM: .byte 243 ; ASM: .byte 242 ; ASM: .byte 241 -; ASM: .short 0x150e # Member kind: StaticDataMember ( LF_STMEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x1004 # Type: const int +; ASM: .short 0x150e # Member kind: LF_STMEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x1004 # Type ; ASM: .asciz "sdm" # Name ; ASM: # FieldList (0x1005) { ; ASM: # TypeLeafKind: LF_FIELDLIST (0x1203) @@ -537,12 +531,11 @@ ; ASM: # Name: sdm ; ASM: # } ; ASM: # } -; ASM: # Struct (0x1006) ; ASM: .short 0x2a # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x4 # MemberCount -; ASM: .short 0x200 # Properties ( HasUniqueName (0x200) ) -; ASM: .long 0x1005 # FieldList: +; ASM: .short 0x200 # Properties +; ASM: .long 0x1005 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape ; ASM: .short 0xc # SizeOf @@ -563,7 +556,6 @@ ; ASM: # Name: Struct ; ASM: # LinkageName: .?AUStruct@@ ; ASM: # } -; ASM: # StringId (0x1007) ; ASM: .short 0x1e # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -573,11 +565,10 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: D:\src\llvm\build\t.cpp ; ASM: # } -; ASM: # UdtSourceLine (0x1008) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x1006 # UDT: Struct -; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x1006 # UDT +; ASM: .long 0x1007 # SourceFile ; ASM: .long 0x1 # LineNumber ; ASM: # UdtSourceLine (0x1008) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -585,11 +576,10 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007) ; ASM: # LineNumber: 1 ; ASM: # } -; ASM: # Union (0x1009) ; ASM: .short 0x1e # Record length ; ASM: .short 0x1506 # Record kind: LF_UNION ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x280 # Properties ( ForwardReference (0x80) | HasUniqueName (0x200) ) +; ASM: .short 0x280 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .short 0x0 # SizeOf ; ASM: .asciz "Union" # Name @@ -606,17 +596,16 @@ ; ASM: # Name: Union ; ASM: # LinkageName: .?ATUnion@@ ; ASM: # } -; ASM: # FieldList (0x100A) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "a" # Name -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x40 # Type: float +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x40 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "b" # Name ; ASM: # FieldList (0x100A) { @@ -636,12 +625,11 @@ ; ASM: # Name: b ; ASM: # } ; ASM: # } -; ASM: # Union (0x100B) ; ASM: .short 0x1e # Record length ; ASM: .short 0x1506 # Record kind: LF_UNION ; ASM: .short 0x2 # MemberCount -; ASM: .short 0x600 # Properties ( HasUniqueName (0x200) | Sealed (0x400) ) -; ASM: .long 0x100a # FieldList: +; ASM: .short 0x600 # Properties +; ASM: .long 0x100a # FieldList ; ASM: .short 0x4 # SizeOf ; ASM: .asciz "Union" # Name ; ASM: .asciz ".?ATUnion@@" # LinkageName @@ -657,11 +645,10 @@ ; ASM: # Name: Union ; ASM: # LinkageName: .?ATUnion@@ ; ASM: # } -; ASM: # UdtSourceLine (0x100C) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x100b # UDT: Union -; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x100b # UDT +; ASM: .long 0x1007 # SourceFile ; ASM: .long 0x7 # LineNumber ; ASM: # UdtSourceLine (0x100C) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -669,11 +656,10 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007) ; ASM: # LineNumber: 7 ; ASM: # } -; ASM: # Class (0x100D) ; ASM: .short 0x26 # Record length ; ASM: .short 0x1504 # Record kind: LF_CLASS ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x280 # Properties ( ForwardReference (0x80) | HasUniqueName (0x200) ) +; ASM: .short 0x280 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape @@ -694,25 +680,24 @@ ; ASM: # Name: Class ; ASM: # LinkageName: .?AVClass@@ ; ASM: # } -; ASM: # FieldList (0x100E) ; ASM: .short 0x32 # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "pub" # Name ; ASM: .byte 242 ; ASM: .byte 241 -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x1 # Attrs: Private -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x1 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x4 # FieldOffset ; ASM: .asciz "priv" # Name ; ASM: .byte 241 -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x2 # Attrs: Protected -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x2 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x8 # FieldOffset ; ASM: .asciz "prot" # Name ; ASM: .byte 241 @@ -740,12 +725,11 @@ ; ASM: # Name: prot ; ASM: # } ; ASM: # } -; ASM: # Class (0x100F) ; ASM: .short 0x26 # Record length ; ASM: .short 0x1504 # Record kind: LF_CLASS ; ASM: .short 0x3 # MemberCount -; ASM: .short 0x200 # Properties ( HasUniqueName (0x200) ) -; ASM: .long 0x100e # FieldList: +; ASM: .short 0x200 # Properties +; ASM: .long 0x100e # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape ; ASM: .short 0xc # SizeOf @@ -764,11 +748,10 @@ ; ASM: # Name: Class ; ASM: # LinkageName: .?AVClass@@ ; ASM: # } -; ASM: # UdtSourceLine (0x1010) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x100f # UDT: Class -; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x100f # UDT +; ASM: .long 0x1007 # SourceFile ; ASM: .long 0xb # LineNumber ; ASM: # UdtSourceLine (0x1010) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -776,11 +759,10 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007) ; ASM: # LineNumber: 11 ; ASM: # } -; ASM: # Struct (0x1011) ; ASM: .short 0x36 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x280 # Properties ( ForwardReference (0x80) | HasUniqueName (0x200) ) +; ASM: .short 0x280 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape @@ -803,11 +785,10 @@ ; ASM: # Name: DerivedClass ; ASM: # LinkageName: .?AUDerivedClass@@ ; ASM: # } -; ASM: # Pointer (0x1012) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1004 # PointeeType: const int -; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ] +; ASM: .long 0x1004 # PointeeType +; ASM: .long 0x1000c # Attributes ; ASM: # Pointer (0x1012) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: const int (0x1004) @@ -822,7 +803,6 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # VFTableShape (0x1013) ; ASM: .short 0x6 # Record length ; ASM: .short 0xa # Record kind: LF_VTSHAPE ; ASM: .short 0x1 # VFEntryCount @@ -832,11 +812,10 @@ ; ASM: # TypeLeafKind: LF_VTSHAPE (0xA) ; ASM: # VFEntryCount: 1 ; ASM: # } -; ASM: # Pointer (0x1014) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1013 # PointeeType: -; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ] +; ASM: .long 0x1013 # PointeeType +; ASM: .long 0x1000c # Attributes ; ASM: # Pointer (0x1014) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: (0x1013) @@ -851,27 +830,26 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # FieldList (0x1015) ; ASM: .short 0x32 # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x1400 # Member kind: BaseClass ( LF_BCLASS ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x1003 # BaseType: Struct +; ASM: .short 0x1400 # Member kind: LF_BCLASS +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x1003 # BaseType ; ASM: .short 0x0 # BaseOffset ; ASM: .byte 242 ; ASM: .byte 241 -; ASM: .short 0x1401 # Member kind: VirtualBaseClass ( LF_VBCLASS ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x100d # BaseType: Class -; ASM: .long 0x1012 # VBPtrType: const int* +; ASM: .short 0x1401 # Member kind: LF_VBCLASS +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x100d # BaseType +; ASM: .long 0x1012 # VBPtrType ; ASM: .short 0x0 # VBPtrOffset ; ASM: .short 0x1 # VBTableIndex -; ASM: .short 0x1409 # Member kind: VFPtr ( LF_VFUNCTAB ) +; ASM: .short 0x1409 # Member kind: LF_VFUNCTAB ; ASM: .short 0x0 # Padding -; ASM: .long 0x1014 # Type: * -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .long 0x1014 # Type +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x18 # FieldOffset ; ASM: .asciz "d" # Name ; ASM: # FieldList (0x1015) { @@ -902,12 +880,11 @@ ; ASM: # Name: d ; ASM: # } ; ASM: # } -; ASM: # Struct (0x1016) ; ASM: .short 0x36 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x4 # MemberCount -; ASM: .short 0x200 # Properties ( HasUniqueName (0x200) ) -; ASM: .long 0x1015 # FieldList: +; ASM: .short 0x200 # Properties +; ASM: .long 0x1015 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape ; ASM: .short 0x30 # SizeOf @@ -928,11 +905,10 @@ ; ASM: # Name: DerivedClass ; ASM: # LinkageName: .?AUDerivedClass@@ ; ASM: # } -; ASM: # UdtSourceLine (0x1017) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x1016 # UDT: DerivedClass -; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x1016 # UDT +; ASM: .long 0x1007 # SourceFile ; ASM: .long 0x14 # LineNumber ; ASM: # UdtSourceLine (0x1017) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -940,11 +916,10 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007) ; ASM: # LineNumber: 20 ; ASM: # } -; ASM: # Struct (0x1018) ; ASM: .short 0x36 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x0 # MemberCount -; ASM: .short 0x288 # Properties ( ForwardReference (0x80) | HasUniqueName (0x200) | Nested (0x8) ) +; ASM: .short 0x288 # Properties ; ASM: .long 0x0 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape @@ -967,12 +942,11 @@ ; ASM: # Name: Class::Nested ; ASM: # LinkageName: .?AUNested@Class@@ ; ASM: # } -; ASM: # FieldList (0x1019) ; ASM: .short 0xe # Record length ; ASM: .short 0x1203 # Record kind: LF_FIELDLIST -; ASM: .short 0x150d # Member kind: DataMember ( LF_MEMBER ) -; ASM: .short 0x3 # Attrs: Public -; ASM: .long 0x74 # Type: int +; ASM: .short 0x150d # Member kind: LF_MEMBER +; ASM: .short 0x3 # AccessSpecifier +; ASM: .long 0x74 # Type ; ASM: .short 0x0 # FieldOffset ; ASM: .asciz "n" # Name ; ASM: # FieldList (0x1019) { @@ -985,12 +959,11 @@ ; ASM: # Name: n ; ASM: # } ; ASM: # } -; ASM: # Struct (0x101A) ; ASM: .short 0x36 # Record length ; ASM: .short 0x1505 # Record kind: LF_STRUCTURE ; ASM: .short 0x1 # MemberCount -; ASM: .short 0x208 # Properties ( HasUniqueName (0x200) | Nested (0x8) ) -; ASM: .long 0x1019 # FieldList: +; ASM: .short 0x208 # Properties +; ASM: .long 0x1019 # FieldList ; ASM: .long 0x0 # DerivedFrom ; ASM: .long 0x0 # VShape ; ASM: .short 0x4 # SizeOf @@ -1011,11 +984,10 @@ ; ASM: # Name: Class::Nested ; ASM: # LinkageName: .?AUNested@Class@@ ; ASM: # } -; ASM: # UdtSourceLine (0x101B) ; ASM: .short 0xe # Record length ; ASM: .short 0x1606 # Record kind: LF_UDT_SRC_LINE -; ASM: .long 0x101a # UDT: Class::Nested -; ASM: .long 0x1007 # SourceFile: D:\src\llvm\build\t.cpp +; ASM: .long 0x101a # UDT +; ASM: .long 0x1007 # SourceFile ; ASM: .long 0x17 # LineNumber ; ASM: # UdtSourceLine (0x101B) { ; ASM: # TypeLeafKind: LF_UDT_SRC_LINE (0x1606) @@ -1023,11 +995,10 @@ ; ASM: # SourceFile: D:\src\llvm\build\t.cpp (0x1007) ; ASM: # LineNumber: 23 ; ASM: # } -; ASM: # Pointer (0x101C) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1011 # PointeeType: DerivedClass -; ASM: .long 0x1040c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8, isConst ] +; ASM: .long 0x1011 # PointeeType +; ASM: .long 0x1040c # Attributes ; ASM: # Pointer (0x101C) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: DerivedClass (0x1011) @@ -1042,16 +1013,15 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # MemberFunction (0x101D) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1009 # Record kind: LF_MFUNCTION -; ASM: .long 0x3 # ReturnType: void -; ASM: .long 0x1011 # ClassType: DerivedClass -; ASM: .long 0x101c # ThisType: DerivedClass* const -; ASM: .byte 0x0 # CallingConvention: NearC +; ASM: .long 0x3 # ReturnType +; ASM: .long 0x1011 # ClassType +; ASM: .long 0x101c # ThisType +; ASM: .byte 0x0 # CallingConvention ; ASM: .byte 0x0 # FunctionOptions ; ASM: .short 0x0 # NumParameters -; ASM: .long 0x1000 # ArgListType: () +; ASM: .long 0x1000 # ArgListType ; ASM: .long 0x0 # ThisAdjustment ; ASM: # MemberFunction (0x101D) { ; ASM: # TypeLeafKind: LF_MFUNCTION (0x1009) @@ -1065,11 +1035,10 @@ ; ASM: # ArgListType: () (0x1000) ; ASM: # ThisAdjustment: 0 ; ASM: # } -; ASM: # MemberFuncId (0x101E) ; ASM: .short 0x26 # Record length ; ASM: .short 0x1602 # Record kind: LF_MFUNC_ID -; ASM: .long 0x1011 # ClassType: DerivedClass -; ASM: .long 0x101d # FunctionType: void DerivedClass::() +; ASM: .long 0x1011 # ClassType +; ASM: .long 0x101d # FunctionType ; ASM: .asciz "DerivedClass::DerivedClass" # Name ; ASM: .byte 241 ; ASM: # MemberFuncId (0x101E) { @@ -1078,11 +1047,10 @@ ; ASM: # FunctionType: void DerivedClass::() (0x101D) ; ASM: # Name: DerivedClass::DerivedClass ; ASM: # } -; ASM: # Pointer (0x101F) ; ASM: .short 0xa # Record length ; ASM: .short 0x1002 # Record kind: LF_POINTER -; ASM: .long 0x1011 # PointeeType: DerivedClass -; ASM: .long 0x1000c # Attrs: [ Type: Near64, Mode: Pointer, SizeOf: 8 ] +; ASM: .long 0x1011 # PointeeType +; ASM: .long 0x1000c # Attributes ; ASM: # Pointer (0x101F) { ; ASM: # TypeLeafKind: LF_POINTER (0x1002) ; ASM: # PointeeType: DerivedClass (0x1011) @@ -1097,7 +1065,6 @@ ; ASM: # IsThisPtr&&: 0 ; ASM: # SizeOf: 8 ; ASM: # } -; ASM: # StringId (0x1020) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -1109,7 +1076,6 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: D:\src\llvm\build ; ASM: # } -; ASM: # StringId (0x1021) ; ASM: .short 0xe # Record length ; ASM: .short 0x1605 # Record kind: LF_STRING_ID ; ASM: .long 0x0 # Id @@ -1121,13 +1087,12 @@ ; ASM: # Id: 0x0 ; ASM: # StringData: t.cpp ; ASM: # } -; ASM: # BuildInfo (0x1022) ; ASM: .short 0x1a # Record length ; ASM: .short 0x1603 # Record kind: LF_BUILDINFO ; ASM: .short 0x5 # NumArgs -; ASM: .long 0x1020 # Argument: D:\src\llvm\build +; ASM: .long 0x1020 # Argument ; ASM: .long 0x0 # Argument -; ASM: .long 0x1021 # Argument: t.cpp +; ASM: .long 0x1021 # Argument ; ASM: .long 0x0 # Argument ; ASM: .long 0x0 # Argument ; ASM: .byte 242