class CodeViewDebug
Declaration
class CodeViewDebug : public DebugHandlerBase { /* full declaration omitted */ };
Description
Collects and handles line tables information in a CodeView format.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:52
Inherits from: DebugHandlerBase
Member Variables
- private llvm::MCStreamer& OS
- private llvm::BumpPtrAllocator Allocator
- private codeview::GlobalTypeTableBuilder TypeTable
- private bool EmitDebugGlobalHashes = false
- Whether to emit type record hashes into .debug$H.
- private codeview::CPUType TheCPU
- The codeview CPU type used by the translation unit.
- private llvm::CodeViewDebug::FunctionInfo* CurFn = nullptr
- private codeview::SourceLanguage CurrentSourceLanguage = codeview::SourceLanguage::Masm
- private DenseMap<const llvm::DIGlobalVariable*, uint64_t> CVGlobalVariableOffsets
- private DenseMap<const llvm::LexicalScope*, SmallVector< llvm::CodeViewDebug::LocalVariable, 1>> ScopeVariables
- private DenseMap<const llvm::DIScope*, std::unique_ptr<GlobalVariableList>> ScopeGlobals
- private SmallVector<llvm::CodeViewDebug::CVGlobalVariable, 1> ComdatVariables
- private SmallVector<llvm::CodeViewDebug::CVGlobalVariable, 1> GlobalVariables
- private SmallVector<const llvm::DIDerivedType*, 4> StaticConstMembers
- List of static const data members to be emitted as S_CONSTANTs.
- private DenseSet<llvm::MCSectionCOFF*> ComdatDebugSections
- The set of comdat .debug$S sections that we've seen so far. Each section must start with a magic version number that must only be emitted once. This set tracks which sections we've already opened.
- private unsigned int NextFuncId = 0
- The next available function index for use with our .cv_* directives. Not to be confused with type indices for LF_FUNC_ID records.
- private MapVector<const llvm::Function*, std::unique_ptr<FunctionInfo>> FnDebugInfo
- Remember some debug info about each function. Keep it in a stable order to emit at the end of the TU.
- private DenseMap<llvm::StringRef, unsigned int> FileIdMap
- Map from full file path to .cv_file id. Full paths are built from DIFiles and are stored in FileToFilepathMap;
- private SmallSetVector<const llvm::DISubprogram*, 4> InlinedSubprograms
- All inlined subprograms in the order they should be emitted.
- private DenseMap<std::pair<const DINode*, const DIType*>, codeview::TypeIndex> TypeIndices
- The second entry in the key is needed for methods as DISubroutineType representing static method type are shared with non-method function type.
- private DenseMap<const llvm::DICompositeType*, codeview::TypeIndex> CompleteTypeIndices
- Map from DICompositeType* to complete type index. Non-record types are always looked up in the normal TypeIndices map.
- private SmallVector<const llvm::DICompositeType*, 4> DeferredCompleteTypes
- Complete record types to emit after all active type lowerings are finished.
- private unsigned int TypeEmissionLevel = 0
- Number of type lowering frames active on the stack.
- private codeview::TypeIndex VBPType
- private const llvm::DISubprogram* CurrentSubprogram = nullptr
- private std::vector<std::pair<std::string, const DIType*>> LocalUDTs
- private std::vector<std::pair<std::string, const DIType*>> GlobalUDTs
- private llvm::CodeViewDebug::FileToFilepathMapTy FileToFilepathMap
Inherited from DebugHandlerBase:
- protected Asm
- protected MMI
- protected PrevInstLoc
- protected PrevLabel = nullptr
- protected PrevInstBB = nullptr
- protected PrologEndLoc
- protected CurMI = nullptr
- protected LScopes
- protected DbgValues
- protected DbgLabels
- protected LabelsBeforeInsn
- protected LabelsAfterInsn
Method Overview
- public CodeViewDebug(llvm::AsmPrinter * AP)
- private void addToUDTs(const llvm::DIType * Ty)
- private void addUDTSrcLine(const llvm::DIType * Ty, codeview::TypeIndex TI)
- private llvm::MCSymbol * beginCVSubsection(codeview::DebugSubsectionKind Kind)
- protected void beginFunctionImpl(const llvm::MachineFunction * MF)
- public void beginInstruction(const llvm::MachineInstr * MI)
- public void beginModule(llvm::Module * M)
- private llvm::MCSymbol * beginSymbolRecord(codeview::SymbolKind Kind)
- private void calculateRanges(llvm::CodeViewDebug::LocalVariable & Var, const DbgValueHistoryMap::Entries & Entries)
- private void clear()
- private llvm::ClassInfo collectClassInfo(const llvm::DICompositeType * Ty)
- private void collectDebugInfoForGlobals()
- private void collectGlobalVariableInfo()
- private void collectLexicalBlockInfo(SmallVectorImpl<llvm::LexicalScope *> & Scopes, SmallVectorImpl<llvm::CodeViewDebug::LexicalBlock *> & Blocks, SmallVectorImpl<llvm::CodeViewDebug::LocalVariable> & Locals, SmallVectorImpl<llvm::CodeViewDebug::CVGlobalVariable> & Globals)
- private void collectLexicalBlockInfo(llvm::LexicalScope & Scope, SmallVectorImpl<llvm::CodeViewDebug::LexicalBlock *> & ParentBlocks, SmallVectorImpl<llvm::CodeViewDebug::LocalVariable> & ParentLocals, SmallVectorImpl<llvm::CodeViewDebug::CVGlobalVariable> & ParentGlobals)
- private void collectMemberInfo(llvm::ClassInfo & Info, const llvm::DIDerivedType * DDTy)
- private const llvm::DISubprogram * collectParentScopeNames(const llvm::DIScope * Scope, SmallVectorImpl<llvm::StringRef> & ParentScopeNames)
- private void collectVariableInfo(const llvm::DISubprogram * SP)
- private void collectVariableInfoFromMFTable(DenseSet<llvm::CodeViewDebug::InlinedEntity> & Processed)
- private static llvm::CodeViewDebug::LocalVarDef createDefRangeMem(uint16_t CVRegister, int Offset)
- private void emitBuildInfo()
- private void emitCodeViewMagicVersion()
- private void emitCompilerInformation()
- private void emitConstantSymbolRecord(const llvm::DIType * DTy, llvm::APSInt & Value, const std::string & QualifiedName)
- private void emitDebugInfoForFunction(const llvm::Function * GV, llvm::CodeViewDebug::FunctionInfo & FI)
- private void emitDebugInfoForGlobal(const llvm::CodeViewDebug::CVGlobalVariable & CVGV)
- private void emitDebugInfoForGlobals()
- private void emitDebugInfoForRetainedTypes()
- private void emitDebugInfoForThunk(const llvm::Function * GV, llvm::CodeViewDebug::FunctionInfo & FI, const llvm::MCSymbol * Fn)
- private void emitDebugInfoForUDTs(const std::vector<std::pair<std::string, const DIType *>> & UDTs)
- private void emitDeferredCompleteTypes()
- private void emitEndSymbolRecord(codeview::SymbolKind EndKind)
- private void emitGlobalVariableList(ArrayRef<llvm::CodeViewDebug::CVGlobalVariable> Globals)
- private void emitInlinedCallSite(const llvm::CodeViewDebug::FunctionInfo & FI, const llvm::DILocation * InlinedAt, const llvm::CodeViewDebug::InlineSite & Site)
- private void emitInlineeLinesSubsection()
- private void emitLexicalBlock(const llvm::CodeViewDebug::LexicalBlock & Block, const llvm::CodeViewDebug::FunctionInfo & FI)
- private void emitLexicalBlockList(ArrayRef<llvm::CodeViewDebug::LexicalBlock *> Blocks, const llvm::CodeViewDebug::FunctionInfo & FI)
- private void emitLocalVariable(const llvm::CodeViewDebug::FunctionInfo & FI, const llvm::CodeViewDebug::LocalVariable & Var)
- private void emitLocalVariableList(const llvm::CodeViewDebug::FunctionInfo & FI, ArrayRef<llvm::CodeViewDebug::LocalVariable> Locals)
- private void emitObjName()
- private void emitStaticConstMemberList()
- private void emitTypeGlobalHashes()
- private void emitTypeInformation()
- private void endCVSubsection(llvm::MCSymbol * EndLabel)
- protected void endFunctionImpl(const llvm::MachineFunction *)
- public void endModule()
- private void endSymbolRecord(llvm::MCSymbol * SymEnd)
- private codeview::TypeIndex getCompleteTypeIndex(const llvm::DIType * Ty)
- private llvm::StringRef getFullFilepath(const llvm::DIFile * File)
- private std::string getFullyQualifiedName(const llvm::DIScope * Scope, llvm::StringRef Name)
- private std::string getFullyQualifiedName(const llvm::DIScope * Scope)
- private codeview::TypeIndex getFuncIdForSubprogram(const llvm::DISubprogram * SP)
- private llvm::CodeViewDebug::InlineSite & getInlineSite(const llvm::DILocation * InlinedAt, const llvm::DISubprogram * Inlinee)
- private codeview::TypeIndex getMemberFunctionType(const llvm::DISubprogram * SP, const llvm::DICompositeType * Class)
- private unsigned int getPointerSizeInBytes()
- private codeview::TypeIndex getScopeIndex(const llvm::DIScope * Scope)
- private codeview::TypeIndex getTypeIndex(const llvm::DIType * Ty, const llvm::DIType * ClassTy = nullptr)
- private codeview::TypeIndex getTypeIndexForReferenceTo(const llvm::DIType * Ty)
- private codeview::TypeIndex getTypeIndexForThisPtr(const llvm::DIDerivedType * PtrTy, const llvm::DISubroutineType * SubroutineTy)
- private codeview::TypeIndex getVBPTypeIndex()
- private codeview::TypeIndex lowerCompleteTypeClass(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerCompleteTypeUnion(const llvm::DICompositeType * Ty)
- private std::tuple<codeview::TypeIndex, codeview::TypeIndex, unsigned int, bool> lowerRecordFieldList(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerType(const llvm::DIType * Ty, const llvm::DIType * ClassTy)
- private codeview::TypeIndex lowerTypeAlias(const llvm::DIDerivedType * Ty)
- private codeview::TypeIndex lowerTypeArray(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerTypeBasic(const llvm::DIBasicType * Ty)
- private codeview::TypeIndex lowerTypeClass(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerTypeEnum(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerTypeFunction(const llvm::DISubroutineType * Ty)
- private codeview::TypeIndex lowerTypeMemberFunction(const llvm::DISubroutineType * Ty, const llvm::DIType * ClassTy, int ThisAdjustment, bool IsStaticMethod, codeview::FunctionOptions FO = codeview::FunctionOptions::None)
- private codeview::TypeIndex lowerTypeMemberPointer(const llvm::DIDerivedType * Ty, codeview::PointerOptions PO = codeview::PointerOptions::None)
- private codeview::TypeIndex lowerTypeModifier(const llvm::DIDerivedType * Ty)
- private codeview::TypeIndex lowerTypePointer(const llvm::DIDerivedType * Ty, codeview::PointerOptions PO = codeview::PointerOptions::None)
- private codeview::TypeIndex lowerTypeString(const llvm::DIStringType * Ty)
- private codeview::TypeIndex lowerTypeUnion(const llvm::DICompositeType * Ty)
- private codeview::TypeIndex lowerTypeVFTableShape(const llvm::DIDerivedType * Ty)
- private unsigned int maybeRecordFile(const llvm::DIFile * F)
- private void maybeRecordLocation(const llvm::DebugLoc & DL, const llvm::MachineFunction * MF)
- protected bool moduleIsInFortran()
- private void recordLocalVariable(llvm::CodeViewDebug::LocalVariable && Var, const llvm::LexicalScope * LS)
- private codeview::TypeIndex recordTypeIndexForDINode(const llvm::DINode * Node, codeview::TypeIndex TI, const llvm::DIType * ClassTy = nullptr)
- private void setCurrentSubprogram(const llvm::DISubprogram * SP)
- public void setSymbolSize(const llvm::MCSymbol *, uint64_t)
- private void switchToDebugSectionForSymbol(const llvm::MCSymbol * GVSym)
Inherited from DebugHandlerBase:
- public beginBasicBlock
- public beginFunction
- protected beginFunctionImpl
- public beginInstruction
- public beginModule
- public endBasicBlock
- public endFunction
- protected endFunctionImpl
- public endInstruction
- public getBaseTypeSize
- public getInstOrdering
- public getLabelAfterInsn
- public getLabelBeforeInsn
- protected identifyScopeMarkers
- public isUnsignedDIType
- protected requestLabelAfterInsn
- protected requestLabelBeforeInsn
- protected skippedNonDebugFunction
Inherited from AsmPrinterHandler:
- public beginBasicBlock
- public beginFragment
- public beginFunclet
- public beginFunction
- public beginInstruction
- public beginModule
- public endBasicBlock
- public endFragment
- public endFunclet
- public endFunction
- public endInstruction
- public endModule
- public markFunctionEnd
- public setSymbolSize
Methods
¶CodeViewDebug(llvm::AsmPrinter* AP)
CodeViewDebug(llvm::AsmPrinter* AP)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:490
Parameters
- llvm::AsmPrinter* AP
¶void addToUDTs(const llvm::DIType* Ty)
void addToUDTs(const llvm::DIType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:412
Parameters
- const llvm::DIType* Ty
¶void addUDTSrcLine(const llvm::DIType* Ty,
codeview::TypeIndex TI)
void addUDTSrcLine(const llvm::DIType* Ty,
codeview::TypeIndex TI)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:414
Parameters
- const llvm::DIType* Ty
- codeview::TypeIndex TI
¶llvm::MCSymbol* beginCVSubsection(
codeview::DebugSubsectionKind Kind)
llvm::MCSymbol* beginCVSubsection(
codeview::DebugSubsectionKind Kind)
Description
Opens a subsection of the given kind in a .debug$S codeview section. Returns an end label for use with endCVSubsection when the subsection is finished.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:342
Parameters
- codeview::DebugSubsectionKind Kind
¶void beginFunctionImpl(
const llvm::MachineFunction* MF)
void beginFunctionImpl(
const llvm::MachineFunction* MF)
Description
Gather pre-function debug information.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:479
Parameters
- const llvm::MachineFunction* MF
¶void beginInstruction(
const llvm::MachineInstr* MI)
void beginInstruction(
const llvm::MachineInstr* MI)
Description
Process beginning of an instruction.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:500
Parameters
- const llvm::MachineInstr* MI
¶void beginModule(llvm::Module* M)
void beginModule(llvm::Module* M)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:492
Parameters
- llvm::Module* M
¶llvm::MCSymbol* beginSymbolRecord(
codeview::SymbolKind Kind)
llvm::MCSymbol* beginSymbolRecord(
codeview::SymbolKind Kind)
Description
Opens a symbol record of the given kind. Returns an end label for use with endSymbolRecord.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:347
Parameters
- codeview::SymbolKind Kind
¶void calculateRanges(
llvm::CodeViewDebug::LocalVariable& Var,
const DbgValueHistoryMap::Entries& Entries)
void calculateRanges(
llvm::CodeViewDebug::LocalVariable& Var,
const DbgValueHistoryMap::Entries& Entries)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:244
Parameters
- llvm::CodeViewDebug::LocalVariable& Var
- const DbgValueHistoryMap::Entries& Entries
¶void clear()
void clear()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:296
¶llvm::ClassInfo collectClassInfo(
const llvm::DICompositeType* Ty)
llvm::ClassInfo collectClassInfo(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:453
Parameters
- const llvm::DICompositeType* Ty
¶void collectDebugInfoForGlobals()
void collectDebugInfoForGlobals()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:331
¶void collectGlobalVariableInfo()
void collectGlobalVariableInfo()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:360
¶void collectLexicalBlockInfo(
SmallVectorImpl<llvm::LexicalScope*>& Scopes,
SmallVectorImpl<
llvm::CodeViewDebug::LexicalBlock*>&
Blocks,
SmallVectorImpl<
llvm::CodeViewDebug::LocalVariable>&
Locals,
SmallVectorImpl<
llvm::CodeViewDebug::CVGlobalVariable>&
Globals)
void collectLexicalBlockInfo(
SmallVectorImpl<llvm::LexicalScope*>& Scopes,
SmallVectorImpl<
llvm::CodeViewDebug::LexicalBlock*>&
Blocks,
SmallVectorImpl<
llvm::CodeViewDebug::LocalVariable>&
Locals,
SmallVectorImpl<
llvm::CodeViewDebug::CVGlobalVariable>&
Globals)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:367
Parameters
- SmallVectorImpl<llvm::LexicalScope*>& Scopes
- SmallVectorImpl< llvm::CodeViewDebug::LexicalBlock*>& Blocks
- SmallVectorImpl< llvm::CodeViewDebug::LocalVariable>& Locals
- SmallVectorImpl< llvm::CodeViewDebug::CVGlobalVariable>& Globals
¶void collectLexicalBlockInfo(
llvm::LexicalScope& Scope,
SmallVectorImpl<
llvm::CodeViewDebug::LexicalBlock*>&
ParentBlocks,
SmallVectorImpl<
llvm::CodeViewDebug::LocalVariable>&
ParentLocals,
SmallVectorImpl<
llvm::CodeViewDebug::CVGlobalVariable>&
ParentGlobals)
void collectLexicalBlockInfo(
llvm::LexicalScope& Scope,
SmallVectorImpl<
llvm::CodeViewDebug::LexicalBlock*>&
ParentBlocks,
SmallVectorImpl<
llvm::CodeViewDebug::LocalVariable>&
ParentLocals,
SmallVectorImpl<
llvm::CodeViewDebug::CVGlobalVariable>&
ParentGlobals)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:371
Parameters
- llvm::LexicalScope& Scope
- SmallVectorImpl< llvm::CodeViewDebug::LexicalBlock*>& ParentBlocks
- SmallVectorImpl< llvm::CodeViewDebug::LocalVariable>& ParentLocals
- SmallVectorImpl< llvm::CodeViewDebug::CVGlobalVariable>& ParentGlobals
¶void collectMemberInfo(
llvm::ClassInfo& Info,
const llvm::DIDerivedType* DDTy)
void collectMemberInfo(
llvm::ClassInfo& Info,
const llvm::DIDerivedType* DDTy)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:452
Parameters
- llvm::ClassInfo& Info
- const llvm::DIDerivedType* DDTy
¶const llvm::DISubprogram* collectParentScopeNames(
const llvm::DIScope* Scope,
SmallVectorImpl<llvm::StringRef>&
ParentScopeNames)
const llvm::DISubprogram* collectParentScopeNames(
const llvm::DIScope* Scope,
SmallVectorImpl<llvm::StringRef>&
ParentScopeNames)
Description
Collect the names of parent scopes, innermost to outermost. Return the innermost subprogram scope if present. Ensure that parent type scopes are inserted into the type table.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:470
Parameters
- const llvm::DIScope* Scope
- SmallVectorImpl<llvm::StringRef>& ParentScopeNames
¶void collectVariableInfo(
const llvm::DISubprogram* SP)
void collectVariableInfo(
const llvm::DISubprogram* SP)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:361
Parameters
- const llvm::DISubprogram* SP
¶void collectVariableInfoFromMFTable(
DenseSet<llvm::CodeViewDebug::InlinedEntity>&
Processed)
void collectVariableInfoFromMFTable(
DenseSet<llvm::CodeViewDebug::InlinedEntity>&
Processed)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:363
Parameters
- DenseSet<llvm::CodeViewDebug::InlinedEntity>& Processed
¶static llvm::CodeViewDebug::LocalVarDef
createDefRangeMem(uint16_t CVRegister, int Offset)
static llvm::CodeViewDebug::LocalVarDef
createDefRangeMem(uint16_t CVRegister, int Offset)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:98
Parameters
- uint16_t CVRegister
- int Offset
¶void emitBuildInfo()
void emitBuildInfo()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:316
¶void emitCodeViewMagicVersion()
void emitCodeViewMagicVersion()
Description
Emit the magic version number at the start of a CodeView type or symbol section. Appears at the front of every .debug$S or .debug$T or .debug$P section.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:306
¶void emitCompilerInformation()
void emitCompilerInformation()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:314
¶void emitConstantSymbolRecord(
const llvm::DIType* DTy,
llvm::APSInt& Value,
const std::string& QualifiedName)
void emitConstantSymbolRecord(
const llvm::DIType* DTy,
llvm::APSInt& Value,
const std::string& QualifiedName)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:334
Parameters
- const llvm::DIType* DTy
- llvm::APSInt& Value
- const std::string& QualifiedName
¶void emitDebugInfoForFunction(
const llvm::Function* GV,
llvm::CodeViewDebug::FunctionInfo& FI)
void emitDebugInfoForFunction(
const llvm::Function* GV,
llvm::CodeViewDebug::FunctionInfo& FI)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:324
Parameters
- const llvm::Function* GV
- llvm::CodeViewDebug::FunctionInfo& FI
¶void emitDebugInfoForGlobal(
const llvm::CodeViewDebug::CVGlobalVariable&
CVGV)
void emitDebugInfoForGlobal(
const llvm::CodeViewDebug::CVGlobalVariable&
CVGV)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:336
Parameters
- const llvm::CodeViewDebug::CVGlobalVariable& CVGV
¶void emitDebugInfoForGlobals()
void emitDebugInfoForGlobals()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:332
¶void emitDebugInfoForRetainedTypes()
void emitDebugInfoForRetainedTypes()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:326
¶void emitDebugInfoForThunk(
const llvm::Function* GV,
llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::MCSymbol* Fn)
void emitDebugInfoForThunk(
const llvm::Function* GV,
llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::MCSymbol* Fn)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:320
Parameters
- const llvm::Function* GV
- llvm::CodeViewDebug::FunctionInfo& FI
- const llvm::MCSymbol* Fn
¶void emitDebugInfoForUDTs(
const std::vector<
std::pair<std::string, const DIType*>>&
UDTs)
void emitDebugInfoForUDTs(
const std::vector<
std::pair<std::string, const DIType*>>&
UDTs)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:328
Parameters
- const std::vector< std::pair<std::string, const DIType*>>& UDTs
¶void emitDeferredCompleteTypes()
void emitDeferredCompleteTypes()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:450
¶void emitEndSymbolRecord(
codeview::SymbolKind EndKind)
void emitEndSymbolRecord(
codeview::SymbolKind EndKind)
Description
Emits an S_END, S_INLINESITE_END, or S_PROC_ID_END record. These records are empty, so we emit them with a simpler assembly sequence that doesn't involve labels.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:353
Parameters
- codeview::SymbolKind EndKind
¶void emitGlobalVariableList(
ArrayRef<
llvm::CodeViewDebug::CVGlobalVariable>
Globals)
void emitGlobalVariableList(
ArrayRef<
llvm::CodeViewDebug::CVGlobalVariable>
Globals)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:333
Parameters
- ArrayRef<llvm::CodeViewDebug::CVGlobalVariable> Globals
¶void emitInlinedCallSite(
const llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::DILocation* InlinedAt,
const llvm::CodeViewDebug::InlineSite& Site)
void emitInlinedCallSite(
const llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::DILocation* InlinedAt,
const llvm::CodeViewDebug::InlineSite& Site)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:355
Parameters
- const llvm::CodeViewDebug::FunctionInfo& FI
- const llvm::DILocation* InlinedAt
- const llvm::CodeViewDebug::InlineSite& Site
¶void emitInlineeLinesSubsection()
void emitInlineeLinesSubsection()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:318
¶void emitLexicalBlock(
const llvm::CodeViewDebug::LexicalBlock&
Block,
const llvm::CodeViewDebug::FunctionInfo& FI)
void emitLexicalBlock(
const llvm::CodeViewDebug::LexicalBlock&
Block,
const llvm::CodeViewDebug::FunctionInfo& FI)
Description
Emit a lexical block scope and its children.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:392
Parameters
- const llvm::CodeViewDebug::LexicalBlock& Block
- const llvm::CodeViewDebug::FunctionInfo& FI
¶void emitLexicalBlockList(
ArrayRef<llvm::CodeViewDebug::LexicalBlock*>
Blocks,
const llvm::CodeViewDebug::FunctionInfo& FI)
void emitLexicalBlockList(
ArrayRef<llvm::CodeViewDebug::LexicalBlock*>
Blocks,
const llvm::CodeViewDebug::FunctionInfo& FI)
Description
Emits a sequence of lexical block scopes and their children.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:388
Parameters
- ArrayRef<llvm::CodeViewDebug::LexicalBlock*> Blocks
- const llvm::CodeViewDebug::FunctionInfo& FI
¶void emitLocalVariable(
const llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::CodeViewDebug::LocalVariable& Var)
void emitLocalVariable(
const llvm::CodeViewDebug::FunctionInfo& FI,
const llvm::CodeViewDebug::LocalVariable& Var)
Description
Emits an S_LOCAL record and its associated defined ranges.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:385
Parameters
- const llvm::CodeViewDebug::FunctionInfo& FI
- const llvm::CodeViewDebug::LocalVariable& Var
¶void emitLocalVariableList(
const llvm::CodeViewDebug::FunctionInfo& FI,
ArrayRef<llvm::CodeViewDebug::LocalVariable>
Locals)
void emitLocalVariableList(
const llvm::CodeViewDebug::FunctionInfo& FI,
ArrayRef<llvm::CodeViewDebug::LocalVariable>
Locals)
Description
Emits local variables in the appropriate order.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:381
Parameters
- const llvm::CodeViewDebug::FunctionInfo& FI
- ArrayRef<llvm::CodeViewDebug::LocalVariable> Locals
¶void emitObjName()
void emitObjName()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:312
¶void emitStaticConstMemberList()
void emitStaticConstMemberList()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:337
¶void emitTypeGlobalHashes()
void emitTypeGlobalHashes()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:310
¶void emitTypeInformation()
void emitTypeInformation()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:308
¶void endCVSubsection(llvm::MCSymbol* EndLabel)
void endCVSubsection(llvm::MCSymbol* EndLabel)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:343
Parameters
- llvm::MCSymbol* EndLabel
¶void endFunctionImpl(const llvm::MachineFunction*)
void endFunctionImpl(const llvm::MachineFunction*)
Description
Gather post-function debug information.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:482
Parameters
- const llvm::MachineFunction*
¶void endModule()
void endModule()
Description
Emit the COFF section that holds the line table information.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:497
¶void endSymbolRecord(llvm::MCSymbol* SymEnd)
void endSymbolRecord(llvm::MCSymbol* SymEnd)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:348
Parameters
- llvm::MCSymbol* SymEnd
¶codeview::TypeIndex getCompleteTypeIndex(
const llvm::DIType* Ty)
codeview::TypeIndex getCompleteTypeIndex(
const llvm::DIType* Ty)
Description
Symbol records should point to complete types, but type records should always point to incomplete types to avoid cycles in the type graph. Only use this entry point when generating symbol records. The complete and incomplete type indices only differ for record types. All other types use the same index.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:443
Parameters
- const llvm::DIType* Ty
¶llvm::StringRef getFullFilepath(
const llvm::DIFile* File)
llvm::StringRef getFullFilepath(
const llvm::DIFile* File)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:290
Parameters
- const llvm::DIFile* File
¶std::string getFullyQualifiedName(
const llvm::DIScope* Scope,
llvm::StringRef Name)
std::string getFullyQualifiedName(
const llvm::DIScope* Scope,
llvm::StringRef Name)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:472
Parameters
- const llvm::DIScope* Scope
- llvm::StringRef Name
¶std::string getFullyQualifiedName(
const llvm::DIScope* Scope)
std::string getFullyQualifiedName(
const llvm::DIScope* Scope)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:473
Parameters
- const llvm::DIScope* Scope
¶codeview::TypeIndex getFuncIdForSubprogram(
const llvm::DISubprogram* SP)
codeview::TypeIndex getFuncIdForSubprogram(
const llvm::DISubprogram* SP)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:242
Parameters
- const llvm::DISubprogram* SP
¶llvm::CodeViewDebug::InlineSite& getInlineSite(
const llvm::DILocation* InlinedAt,
const llvm::DISubprogram* Inlinee)
llvm::CodeViewDebug::InlineSite& getInlineSite(
const llvm::DILocation* InlinedAt,
const llvm::DISubprogram* Inlinee)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:239
Parameters
- const llvm::DILocation* InlinedAt
- const llvm::DISubprogram* Inlinee
¶codeview::TypeIndex getMemberFunctionType(
const llvm::DISubprogram* SP,
const llvm::DICompositeType* Class)
codeview::TypeIndex getMemberFunctionType(
const llvm::DISubprogram* SP,
const llvm::DICompositeType* Class)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:405
Parameters
- const llvm::DISubprogram* SP
- const llvm::DICompositeType* Class
¶unsigned int getPointerSizeInBytes()
unsigned int getPointerSizeInBytes()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:475
¶codeview::TypeIndex getScopeIndex(
const llvm::DIScope* Scope)
codeview::TypeIndex getScopeIndex(
const llvm::DIScope* Scope)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:408
Parameters
- const llvm::DIScope* Scope
¶codeview::TypeIndex getTypeIndex(
const llvm::DIType* Ty,
const llvm::DIType* ClassTy = nullptr)
codeview::TypeIndex getTypeIndex(
const llvm::DIType* Ty,
const llvm::DIType* ClassTy = nullptr)
Description
Translates the DIType to codeview if necessary and returns a type index for it.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:396
Parameters
- const llvm::DIType* Ty
- const llvm::DIType* ClassTy = nullptr
¶codeview::TypeIndex getTypeIndexForReferenceTo(
const llvm::DIType* Ty)
codeview::TypeIndex getTypeIndexForReferenceTo(
const llvm::DIType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:403
Parameters
- const llvm::DIType* Ty
¶codeview::TypeIndex getTypeIndexForThisPtr(
const llvm::DIDerivedType* PtrTy,
const llvm::DISubroutineType* SubroutineTy)
codeview::TypeIndex getTypeIndexForThisPtr(
const llvm::DIDerivedType* PtrTy,
const llvm::DISubroutineType* SubroutineTy)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:400
Parameters
- const llvm::DIDerivedType* PtrTy
- const llvm::DISubroutineType* SubroutineTy
¶codeview::TypeIndex getVBPTypeIndex()
codeview::TypeIndex getVBPTypeIndex()
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:410
¶codeview::TypeIndex lowerCompleteTypeClass(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerCompleteTypeClass(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:445
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerCompleteTypeUnion(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerCompleteTypeUnion(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:446
Parameters
- const llvm::DICompositeType* Ty
¶std::tuple<codeview::TypeIndex,
codeview::TypeIndex,
unsigned int,
bool>
lowerRecordFieldList(
const llvm::DICompositeType* Ty)
std::tuple<codeview::TypeIndex,
codeview::TypeIndex,
unsigned int,
bool>
lowerRecordFieldList(
const llvm::DICompositeType* Ty)
Description
Common record member lowering functionality for record types, which are structs, classes, and unions. Returns the field list index and the member count.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:459
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerType(
const llvm::DIType* Ty,
const llvm::DIType* ClassTy)
codeview::TypeIndex lowerType(
const llvm::DIType* Ty,
const llvm::DIType* ClassTy)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:416
Parameters
- const llvm::DIType* Ty
- const llvm::DIType* ClassTy
¶codeview::TypeIndex lowerTypeAlias(
const llvm::DIDerivedType* Ty)
codeview::TypeIndex lowerTypeAlias(
const llvm::DIDerivedType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:417
Parameters
- const llvm::DIDerivedType* Ty
¶codeview::TypeIndex lowerTypeArray(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerTypeArray(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:418
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerTypeBasic(
const llvm::DIBasicType* Ty)
codeview::TypeIndex lowerTypeBasic(
const llvm::DIBasicType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:420
Parameters
- const llvm::DIBasicType* Ty
¶codeview::TypeIndex lowerTypeClass(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerTypeClass(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:435
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerTypeEnum(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerTypeEnum(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:434
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerTypeFunction(
const llvm::DISubroutineType* Ty)
codeview::TypeIndex lowerTypeFunction(
const llvm::DISubroutineType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:428
Parameters
- const llvm::DISubroutineType* Ty
¶codeview::TypeIndex lowerTypeMemberFunction(
const llvm::DISubroutineType* Ty,
const llvm::DIType* ClassTy,
int ThisAdjustment,
bool IsStaticMethod,
codeview::FunctionOptions FO =
codeview::FunctionOptions::None)
codeview::TypeIndex lowerTypeMemberFunction(
const llvm::DISubroutineType* Ty,
const llvm::DIType* ClassTy,
int ThisAdjustment,
bool IsStaticMethod,
codeview::FunctionOptions FO =
codeview::FunctionOptions::None)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:430
Parameters
- const llvm::DISubroutineType* Ty
- const llvm::DIType* ClassTy
- int ThisAdjustment
- bool IsStaticMethod
- codeview::FunctionOptions FO = codeview::FunctionOptions::None
¶codeview::TypeIndex lowerTypeMemberPointer(
const llvm::DIDerivedType* Ty,
codeview::PointerOptions PO =
codeview::PointerOptions::None)
codeview::TypeIndex lowerTypeMemberPointer(
const llvm::DIDerivedType* Ty,
codeview::PointerOptions PO =
codeview::PointerOptions::None)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:424
Parameters
- const llvm::DIDerivedType* Ty
- codeview::PointerOptions PO = codeview::PointerOptions::None
¶codeview::TypeIndex lowerTypeModifier(
const llvm::DIDerivedType* Ty)
codeview::TypeIndex lowerTypeModifier(
const llvm::DIDerivedType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:427
Parameters
- const llvm::DIDerivedType* Ty
¶codeview::TypeIndex lowerTypePointer(
const llvm::DIDerivedType* Ty,
codeview::PointerOptions PO =
codeview::PointerOptions::None)
codeview::TypeIndex lowerTypePointer(
const llvm::DIDerivedType* Ty,
codeview::PointerOptions PO =
codeview::PointerOptions::None)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:421
Parameters
- const llvm::DIDerivedType* Ty
- codeview::PointerOptions PO = codeview::PointerOptions::None
¶codeview::TypeIndex lowerTypeString(
const llvm::DIStringType* Ty)
codeview::TypeIndex lowerTypeString(
const llvm::DIStringType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:419
Parameters
- const llvm::DIStringType* Ty
¶codeview::TypeIndex lowerTypeUnion(
const llvm::DICompositeType* Ty)
codeview::TypeIndex lowerTypeUnion(
const llvm::DICompositeType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:436
Parameters
- const llvm::DICompositeType* Ty
¶codeview::TypeIndex lowerTypeVFTableShape(
const llvm::DIDerivedType* Ty)
codeview::TypeIndex lowerTypeVFTableShape(
const llvm::DIDerivedType* Ty)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:429
Parameters
- const llvm::DIDerivedType* Ty
¶unsigned int maybeRecordFile(
const llvm::DIFile* F)
unsigned int maybeRecordFile(
const llvm::DIFile* F)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:292
Parameters
- const llvm::DIFile* F
¶void maybeRecordLocation(
const llvm::DebugLoc& DL,
const llvm::MachineFunction* MF)
void maybeRecordLocation(
const llvm::DebugLoc& DL,
const llvm::MachineFunction* MF)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:294
Parameters
- const llvm::DebugLoc& DL
- const llvm::MachineFunction* MF
¶bool moduleIsInFortran()
bool moduleIsInFortran()
Description
Check if the current module is in Fortran.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:485
¶void recordLocalVariable(
llvm::CodeViewDebug::LocalVariable&& Var,
const llvm::LexicalScope* LS)
void recordLocalVariable(
llvm::CodeViewDebug::LocalVariable&& Var,
const llvm::LexicalScope* LS)
Description
Records information about a local variable in the appropriate scope. In particular, locals from inlined code live inside the inlining site.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:378
Parameters
- llvm::CodeViewDebug::LocalVariable&& Var
- const llvm::LexicalScope* LS
¶codeview::TypeIndex recordTypeIndexForDINode(
const llvm::DINode* Node,
codeview::TypeIndex TI,
const llvm::DIType* ClassTy = nullptr)
codeview::TypeIndex recordTypeIndexForDINode(
const llvm::DINode* Node,
codeview::TypeIndex TI,
const llvm::DIType* ClassTy = nullptr)
Description
Inserts {{Node, ClassTy}, TI} into TypeIndices and checks for duplicates.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:462
Parameters
- const llvm::DINode* Node
- codeview::TypeIndex TI
- const llvm::DIType* ClassTy = nullptr
¶void setCurrentSubprogram(
const llvm::DISubprogram* SP)
void setCurrentSubprogram(
const llvm::DISubprogram* SP)
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:298
Parameters
- const llvm::DISubprogram* SP
¶void setSymbolSize(const llvm::MCSymbol*,
uint64_t)
void setSymbolSize(const llvm::MCSymbol*,
uint64_t)
Description
For symbols that have a size designated (e.g. common symbols), this tracks that size.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:494
Parameters
- const llvm::MCSymbol*
- uint64_t
¶void switchToDebugSectionForSymbol(
const llvm::MCSymbol* GVSym)
void switchToDebugSectionForSymbol(
const llvm::MCSymbol* GVSym)
Description
Switch to the appropriate .debug$S section for GVSym. If GVSym, the symbol of an emitted global value, is in a comdat COFF section, this will switch to a new .debug$S section in that comdat. This method ensures that the section starts with the magic version number on first use. If GVSym is null, uses the main .debug$S section.
Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:233
Parameters
- const llvm::MCSymbol* GVSym