LLVM: llvm::CodeViewDebug Class Reference (original) (raw)

Collects and handles line tables information in a CodeView format. More...

#include "[CodeGen/AsmPrinter/CodeViewDebug.h](CodeViewDebug%5F8h%5Fsource.html)"

Public Member Functions
CodeViewDebug (AsmPrinter *AP)
void beginModule (Module *M) override
void endModule () override
Emit the COFF section that holds the line table information.
void beginInstruction (const MachineInstr *MI) override
Process beginning of an instruction.
Public Member Functions inherited from llvm::DebugHandlerBase
~DebugHandlerBase () override
void beginModule (Module *M) override
void beginInstruction (const MachineInstr *MI) override
Process beginning of an instruction.
void endInstruction () override
Process end of an instruction.
void beginFunction (const MachineFunction *MF) override
Gather pre-function debug information.
void endFunction (const MachineFunction *MF) override
Gather post-function debug information.
void beginBasicBlockSection (const MachineBasicBlock &MBB) override
Process the beginning of a new basic-block-section within a function.
void endBasicBlockSection (const MachineBasicBlock &MBB) override
Process the end of a basic-block-section within a function.
MCSymbol * getLabelBeforeInsn (const MachineInstr *MI)
Return Label preceding the instruction.
MCSymbol * getLabelAfterInsn (const MachineInstr *MI)
Return Label immediately following the instruction.
const InstructionOrdering & getInstOrdering () const
const LexicalScopes & getLexicalScopes () const
Public Member Functions inherited from llvm::AsmPrinterHandler
virtual ~AsmPrinterHandler ()
Pin vtables to this file.
virtual void markFunctionEnd ()
virtual void setSymbolSize (const MCSymbol *Sym, uint64_t Size)
For symbols that have a size designated (e.g.
virtual void beginCodeAlignment (const MachineBasicBlock &MBB)
virtual void beginFunclet (const MachineBasicBlock &MBB, MCSymbol *Sym=nullptr)
Emit target-specific EH funclet machinery.
virtual void endFunclet ()
Protected Member Functions
void beginFunctionImpl (const MachineFunction *MF) override
Gather pre-function debug information.
void endFunctionImpl (const MachineFunction *) override
Gather post-function debug information.
bool moduleIsInFortran ()
Check if the current module is in Fortran.
Protected Member Functions inherited from llvm::DebugHandlerBase
DebugHandlerBase (AsmPrinter *A)
void identifyScopeMarkers ()
Indentify instructions that are marking the beginning of or ending of a scope.
void requestLabelBeforeInsn (const MachineInstr *MI)
Ensure that a label will be emitted before MI.
void requestLabelAfterInsn (const MachineInstr *MI)
Ensure that a label will be emitted after MI.
virtual void skippedNonDebugFunction ()
Additional Inherited Members
Static Public Member Functions inherited from llvm::DebugHandlerBase
static uint64_t getBaseTypeSize (const DIType *Ty)
If this type is derived from a base type then return base type size.
static bool isUnsignedDIType (const DIType *Ty)
Return true if type encoding is unsigned.
Protected Attributes inherited from llvm::DebugHandlerBase
AsmPrinter * Asm = nullptr
Target of debug info emission.
MachineModuleInfo * MMI = nullptr
Collected machine module information.
DebugLoc PrevInstLoc
Previous instruction's location information.
MCSymbol * PrevLabel = nullptr
const MachineBasicBlock * PrevInstBB = nullptr
const MachineInstr * PrologEndLoc
This location indicates end of function prologue and beginning of function body.
const MachineBasicBlock * EpilogBeginBlock = nullptr
This block includes epilogue instructions.
const MachineInstr * CurMI = nullptr
If nonnull, stores the current machine instruction we're processing.
LexicalScopes LScopes
DbgValueHistoryMap DbgValues
History of DBG_VALUE and clobber instructions for each user variable.
DbgLabelInstrMap DbgLabels
Mapping of inlined labels and DBG_LABEL machine instruction.
DenseMap< const MachineInstr *, MCSymbol * > LabelsBeforeInsn
Maps instruction with label emitted before instruction.
DenseMap< const MachineInstr *, MCSymbol * > LabelsAfterInsn
Maps instruction with label emitted after instruction.

Collects and handles line tables information in a CodeView format.

Definition at line 55 of file CodeViewDebug.h.

beginFunctionImpl()

Gather pre-function debug information.

Implements llvm::DebugHandlerBase.

Definition at line 1496 of file CodeViewDebug.cpp.

References llvm::DebugHandlerBase::Asm, assert(), llvm::classifyEHPersonality(), llvm::MachineFunction::exposesReturnsTwice(), llvm::codeview::FramePtr, llvm::MachineInstr::FrameSetup, llvm::MachineFrameInfo::getCVBytesOfCalleeSavedRegisters(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::MachineFunction::getFunction(), llvm::MachineFrameInfo::getOffsetAdjustment(), llvm::Function::getPersonalityFn(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::MachineFunction::getSubtarget(), llvm::codeview::HasAlloca, llvm::codeview::HasExceptionHandling, llvm::Function::hasFnAttribute(), llvm::TargetFrameLowering::hasFP(), llvm::MachineFunction::hasInlineAsm(), llvm::codeview::HasInlineAssembly, llvm::Function::hasOptNone(), llvm::Function::hasOptSize(), llvm::Function::hasPersonalityFn(), llvm::Function::hasProfileData(), llvm::codeview::HasSetJmp, llvm::Function::hasStackProtectorFnAttr(), llvm::MachineFrameInfo::hasStackProtectorIndex(), llvm::codeview::HasStructuredExceptionHandling, llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::Function::insert(), llvm::isAsynchronousEHPersonality(), isThumb(), llvm::codeview::MarkedInline, MBB, MI, llvm::DebugHandlerBase::MMI, llvm::codeview::Naked, llvm::None, llvm::codeview::None, llvm::codeview::OptimizedForSpeed, llvm::codeview::ProfileGuidedOptimization, llvm::DebugHandlerBase::PrologEndLoc, llvm::DebugHandlerBase::requestLabelAfterInsn(), llvm::DebugHandlerBase::requestLabelBeforeInsn(), llvm::codeview::SafeBuffers, llvm::codeview::SecurityChecks, llvm::codeview::StackPtr, llvm::codeview::StrictSecurityChecks, llvm::Triple::thumb, TRI, and llvm::codeview::ValidProfileCounts.

beginInstruction()

beginModule()

void CodeViewDebug::beginModule ( Module * M) overridevirtual

Reimplemented from llvm::AsmPrinterHandler.

Definition at line 613 of file CodeViewDebug.cpp.

References llvm::DebugHandlerBase::Asm, llvm::iterator_range< IteratorT >::begin(), llvm::cast(), llvm::iterator_range< IteratorT >::empty(), llvm::mdconst::extract_or_null(), llvm::DISourceLanguageName::getName(), llvm::DISourceLanguageName::hasVersionedName(), llvm::ConstantInt::isZero(), mapArchToCVCPUType(), MapDWARFLanguageToCVLang(), llvm::DebugHandlerBase::MMI, llvm::DICompileUnit::NoDebug, and llvm::NamedMDNode::operands().

endFunctionImpl()

Gather post-function debug information.

Implements llvm::DebugHandlerBase.

Definition at line 3087 of file CodeViewDebug.cpp.

References llvm::DebugHandlerBase::Asm, assert(), llvm::dyn_cast(), llvm::get(), llvm::MachineFunction::getCodeViewAnnotations(), llvm::MachineFunction::getFunction(), llvm::DebugHandlerBase::getLabelAfterInsn(), llvm::DebugHandlerBase::getLabelBeforeInsn(), llvm::Function::getSubprogram(), isThumb(), llvm::DebugHandlerBase::LScopes, MBB, MI, llvm::DebugHandlerBase::MMI, and llvm::Triple::thumb.

endModule()

void CodeViewDebug::endModule ( ) overridevirtual

moduleIsInFortran()

bool llvm::CodeViewDebug::moduleIsInFortran ( ) inlineprotected

The documentation for this class was generated from the following files: