Go to the documentation of this file.
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) }
152 #define TYPE_RECORD(ename, value, name) \
155 #include "llvm/DebugInfo/CodeView/CodeViewTypes.def"
159 return "UnknownLeaf";
185 if (PrintRecordBytes)
202 if (PrintRecordBytes)
225 auto Indices =
Args.getIndices();
337 for (
const auto &M : MethodList.
getMethods()) {
339 printMemberAttributes(
M.getAccess(),
M.getMethodKind(),
M.getOptions());
341 if (
M.isIntroducingVirtual())
342 W->
printHex(
"VFTableOffset",
M.getVFTableOffset());
376 if (
Ptr.isPointerToMember()) {
429 for (
auto Arg :
Args.getArgs()) {
436 return printMemberAttributes(
Attrs.getAccess(),
Attrs.getMethodKind(),
440 void TypeDumpVisitor::printMemberAttributes(
MemberAccess Access,
TypeIndex getOverriddenVTable() const
MemberAccess
Source-level access specifier. (CV_access_e)
This is an optimization pass for GlobalISel generic memory operations.
TypeIndex getContinuationIndex() const
ArrayRef< OneMethodRecord > getMethods() const
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
CallingConvention getCallConv() const
uint32_t getEntryCount() const
uint32_t getTypesCount() const
const GUID & getGuid() const
TypeIndex getType() const
ModifierOptions
Equivalent to CV_modifier_t.
@ HasConstructorOrDestructor
static TypeIndex fromArrayIndex(uint32_t Index)
ArrayRef< StringRef > getMethodNames() const
static ErrorSuccess success()
Create a success value.
static const EnumEntry< uint16_t > TypeModifierNames[]
@ VirtualInheritanceFunction
virtual raw_ostream & getOStream()
@ ConstructorWithVirtualBases
FunctionOptions getOptions() const
TypeIndex getArgumentList() const
StringRef getName() const
static Error visitKnownRecord(CVSymbol &Record, SymbolVisitorCallbacks &Callbacks)
LabelType
Equivalent to CV_LABEL_TYPE_e.
void unindent(int Levels=1)
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
Error visitMemberRecordStream(ArrayRef< uint8_t > FieldList, TypeVisitorCallbacks &Callbacks)
void printTypeIndex(ScopedPrinter &Printer, StringRef FieldName, TypeIndex TI, TypeCollection &Types)
auto formatv(const char *Fmt, Ts &&... Vals) -> formatv_object< decltype(std::make_tuple(detail::build_format_adapter(std::forward< Ts >(Vals))...))>
TypeIndex getReturnType() const
Equvalent to CV_fldattr_t in cvinfo.h.
TypeIndex getReturnType() const
@ SingleInheritanceFunction
TypeIndex getArgumentList() const
Error visitMemberBegin(CVMemberRecord &Record) override
Error visitTypeEnd(CVType &Record) override
TypeIndex getClassType() const
void printItemIndex(StringRef FieldName, TypeIndex TI) const
MethodKind
Part of member attribute flags. (CV_methodprop_e)
ArrayRef< TypeIndex > getIndices() const
StringRef getName() const
Error visitUnknownMember(CVMemberRecord &Record) override
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together.
For method overload sets. LF_METHOD.
TypeIndex getThisType() const
bool isIntroducingVirtual() const
PointerMode
Equivalent to CV_ptrmode_e.
virtual void printNumber(StringRef Label, uint64_t Value)
static const EnumEntry< uint8_t > MemberAccessNames[]
Error visitMemberEnd(CVMemberRecord &Record) override
Error visitUnknownType(CVType &Record) override
Action to take on unknown types. By default, they are ignored.
void printTypeIndex(StringRef FieldName, TypeIndex TI) const
void printFlags(StringRef Label, T Value, ArrayRef< EnumEntry< TFlag >> Flags, TFlag EnumMask1={}, TFlag EnumMask2={}, TFlag EnumMask3={})
int32_t getThisPointerAdjustment() const
StringRef getName() const
static const EnumEntry< uint16_t > LabelTypeEnum[]
virtual uint32_t size()=0
void printEnum(StringRef Label, T Value, ArrayRef< EnumEntry< TEnum >> EnumValues)
void printBinaryBlock(StringRef Label, ArrayRef< uint8_t > Value, uint32_t StartOffset)
static const EnumEntry< uint8_t > PtrKindNames[]
uint16_t getParameterCount() const
TypeIndex getMethodList() const
static StringRef getLeafTypeName(TypeLeafKind LT)
uint32_t getSignature() const
StringRef getPrecompFilePath() const
uint32_t getVFPtrOffset() const
static const EnumEntry< uint16_t > MemberKindNames[]
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
MethodKind getMethodKind() const
uint16_t getNumOverloads() const
StringRef - Represent a constant reference to a string, i.e.
@ HasOverloadedAssignmentOperator
MemberAccess getAccess() const
TypeIndex getElementType() const
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
virtual void printString(StringRef Value)
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
virtual raw_ostream & startLine()
uint32_t getSignature() const
static const EnumEntry< uint8_t > PtrModeNames[]
TypeIndex getCompleteClass() const
constexpr std::nullopt_t None
Error visitTypeBegin(CVType &Record) override
Paired begin/end actions for all types.
static const EnumEntry< TypeLeafKind > LeafTypeNames[]
uint16_t getParameterCount() const
static const EnumEntry< uint16_t > PtrMemberRepNames[]
Lightweight error class with error context and mandatory checking.
@ PointerToMemberFunction
static const EnumEntry< uint16_t > ClassOptionNames[]
void indent(int Levels=1)
AMDGPU Lower Kernel Arguments
static const EnumEntry< uint8_t > CallingConventions[]
static const EnumEntry< uint8_t > FunctionOptionEnum[]
static Error visitKnownMember(CVMemberRecord &Record, TypeVisitorCallbacks &Callbacks)
static const EnumEntry< uint16_t > MethodOptionNames[]
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
StringRef getName() const
#define ENUM_ENTRY(enum_class, enum)
void printHex(StringRef Label, T Value)
CallingConvention getCallConv() const
StringRef getBytesAsCharacters(ArrayRef< uint8_t > LeafData)
Reinterpret a byte array as an array of characters.
StringRef getName() const
uint32_t getStartTypeIndex() const
MethodOptions getOptions() const
int32_t getVFTableOffset() const
PointerKind
Equivalent to CV_ptrtype_e.
TypeIndex getType() const
@ MultipleInheritanceData
ArrayRef(const T &OneElt) -> ArrayRef< T >
TypeIndex getIndexType() const
@ MultipleInheritanceFunction
constexpr char Args[]
Key for Kernel::Metadata::mArgs.
MethodOptions
Equivalent to CV_fldattr_t bitfield.
FunctionOptions getOptions() const