25#define CV_TYPE(enum, val) {#enum, enum},
26#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
29#define ENUM_ENTRY(enum_class, enum) \
30 { #enum, std::underlying_type_t<enum_class>(enum_class::enum) }
153#define TYPE_RECORD(ename, value, name) \
156#include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
160 return "UnknownLeaf";
186 if (PrintRecordBytes)
203 if (PrintRecordBytes)
211Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
226 auto Indices = Args.getIndices();
336Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
338 for (
const auto &M : MethodList.
getMethods()) {
340 printMemberAttributes(
M.getAccess(),
M.getMethodKind(),
M.getOptions());
342 if (
M.isIntroducingVirtual())
343 W->
printHex(
"VFTableOffset",
M.getVFTableOffset());
377 if (
Ptr.isPointerToMember()) {
403Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
409Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
417Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
430 for (
auto Arg :
Args.getArgs()) {
437 return printMemberAttributes(
Attrs.getAccess(),
Attrs.getMethodKind(),
441void TypeDumpVisitor::printMemberAttributes(
MemberAccess Access,
557Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
566Error TypeDumpVisitor::visitKnownRecord(
CVType &CVR,
AMDGPU Lower Kernel Arguments
static const EnumEntry< uint16_t > MemberKindNames[]
static const EnumEntry< uint16_t > TypeModifierNames[]
static const EnumEntry< uint16_t > PtrMemberRepNames[]
static const EnumEntry< uint8_t > CallingConventions[]
static const EnumEntry< uint8_t > FunctionOptionEnum[]
static const EnumEntry< uint16_t > LabelTypeEnum[]
static const EnumEntry< uint16_t > MethodOptionNames[]
static const EnumEntry< uint8_t > MemberAccessNames[]
static const EnumEntry< uint8_t > PtrModeNames[]
static const EnumEntry< uint16_t > ClassOptionNames[]
static const EnumEntry< uint8_t > PtrKindNames[]
static const EnumEntry< uint16_t > MemberKindNames[]
static const EnumEntry< uint16_t > TypeModifierNames[]
static const EnumEntry< uint16_t > PtrMemberRepNames[]
static const EnumEntry< uint8_t > CallingConventions[]
static const EnumEntry< uint8_t > FunctionOptionEnum[]
static const EnumEntry< uint16_t > LabelTypeEnum[]
static const EnumEntry< uint16_t > MethodOptionNames[]
static const EnumEntry< uint8_t > MemberAccessNames[]
#define ENUM_ENTRY(enum_class, enum)
static StringRef getLeafTypeName(TypeLeafKind LT)
static const EnumEntry< uint8_t > PtrModeNames[]
static const EnumEntry< uint16_t > ClassOptionNames[]
static const EnumEntry< TypeLeafKind > LeafTypeNames[]
static const EnumEntry< uint8_t > PtrKindNames[]
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
virtual void printString(StringRef Value)
void printBinaryBlock(StringRef Label, ArrayRef< uint8_t > Value, uint32_t StartOffset)
void indent(int Levels=1)
void unindent(int Levels=1)
void printEnum(StringRef Label, T Value, ArrayRef< EnumEntry< TEnum > > EnumValues)
virtual raw_ostream & getOStream()
virtual raw_ostream & startLine()
virtual void printNumber(StringRef Label, char Value)
void printHex(StringRef Label, T Value)
void printFlags(StringRef Label, T Value, ArrayRef< EnumEntry< TFlag > > Flags, TFlag EnumMask1={}, TFlag EnumMask2={}, TFlag EnumMask3={}, ArrayRef< FlagEntry > ExtraFlags={})
StringRef - Represent a constant reference to a string, i.e.
TypeIndex getElementType() const
TypeIndex getIndexType() const
StringRef getName() const
uint32_t getSignature() const
LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together.
TypeIndex getContinuationIndex() const
TypeIndex getReturnType() const
int32_t getThisPointerAdjustment() const
TypeIndex getArgumentList() const
uint16_t getParameterCount() const
TypeIndex getThisType() const
FunctionOptions getOptions() const
TypeIndex getClassType() const
CallingConvention getCallConv() const
ArrayRef< OneMethodRecord > getMethods() const
int32_t getVFTableOffset() const
TypeIndex getType() const
bool isIntroducingVirtual() const
MemberAccess getAccess() const
MethodOptions getOptions() const
MethodKind getMethodKind() const
StringRef getName() const
For method overload sets. LF_METHOD.
StringRef getName() const
uint16_t getNumOverloads() const
TypeIndex getMethodList() const
uint32_t getSignature() const
StringRef getPrecompFilePath() const
uint32_t getTypesCount() const
uint32_t getStartTypeIndex() const
TypeIndex getReturnType() const
TypeIndex getArgumentList() const
uint16_t getParameterCount() const
FunctionOptions getOptions() const
CallingConvention getCallConv() const
ArrayRef< TypeIndex > getIndices() const
virtual uint32_t size()=0
Error visitTypeEnd(CVType &Record) override
void printTypeIndex(StringRef FieldName, TypeIndex TI) const
Error visitUnknownMember(CVMemberRecord &Record) override
Error visitMemberEnd(CVMemberRecord &Record) override
Error visitUnknownType(CVType &Record) override
Action to take on unknown types. By default, they are ignored.
void printItemIndex(StringRef FieldName, TypeIndex TI) const
Error visitTypeBegin(CVType &Record) override
Paired begin/end actions for all types.
Error visitMemberBegin(CVMemberRecord &Record) override
static TypeIndex fromArrayIndex(uint32_t Index)
StringRef getName() const
const GUID & getGuid() const
TypeIndex getType() const
uint32_t getVFPtrOffset() const
TypeIndex getOverriddenVTable() const
ArrayRef< StringRef > getMethodNames() const
StringRef getName() const
TypeIndex getCompleteClass() const
uint32_t getEntryCount() const
constexpr char Args[]
Key for Kernel::Metadata::mArgs.
constexpr char Attrs[]
Key for Kernel::Metadata::mAttrs.
PointerMode
Equivalent to CV_ptrmode_e.
@ PointerToMemberFunction
MethodKind
Part of member attribute flags. (CV_methodprop_e)
PointerKind
Equivalent to CV_ptrtype_e.
@ HasConstructorOrDestructor
@ HasOverloadedAssignmentOperator
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
@ MultipleInheritanceData
@ SingleInheritanceFunction
@ VirtualInheritanceFunction
@ MultipleInheritanceFunction
Error visitMemberRecordStream(ArrayRef< uint8_t > FieldList, TypeVisitorCallbacks &Callbacks)
MethodOptions
Equivalent to CV_fldattr_t bitfield.
StringRef getBytesAsCharacters(ArrayRef< uint8_t > LeafData)
Reinterpret a byte array as an array of characters.
@ ConstructorWithVirtualBases
MemberAccess
Source-level access specifier. (CV_access_e)
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
ModifierOptions
Equivalent to CV_modifier_t.
LabelType
Equivalent to CV_LABEL_TYPE_e.
void printTypeIndex(ScopedPrinter &Printer, StringRef FieldName, TypeIndex TI, TypeCollection &Types)
NodeAddr< FuncNode * > Func
This is an optimization pass for GlobalISel generic memory operations.
auto formatv(const char *Fmt, Ts &&...Vals) -> formatv_object< decltype(std::make_tuple(support::detail::build_format_adapter(std::forward< Ts >(Vals))...))>
@ Mod
The access may modify the value stored in memory.
Equvalent to CV_fldattr_t in cvinfo.h.