| LLVM 22.0.0git
    | 
Collects and handles line tables information in a CodeView format. More...
#include "CodeGen/AsmPrinter/CodeViewDebug.h"
| Classes | |
| struct | LocalVarDef | 
| struct | TypeLoweringScope | 
| 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.
| CodeViewDebug::CodeViewDebug | ( | AsmPrinter * | AP | ) | 
Definition at line 135 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, and llvm::DebugHandlerBase::DebugHandlerBase().
Referenced by llvm::CodeViewDebug::TypeLoweringScope::TypeLoweringScope().
| 
 | overrideprotectedvirtual | 
Gather pre-function debug information.
Implements llvm::DebugHandlerBase.
Definition at line 1492 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.
| 
 | overridevirtual | 
Process beginning of an instruction.
Reimplemented from llvm::AsmPrinterHandler.
Definition at line 3140 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, llvm::DebugHandlerBase::beginInstruction(), DL, llvm::MachineInstr::FrameSetup, isUsableDebugLoc(), MI, and llvm::DebugHandlerBase::PrevInstBB.
| 
 | 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::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().
| 
 | overrideprotectedvirtual | 
Gather post-function debug information.
Implements llvm::DebugHandlerBase.
Definition at line 3083 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.
| 
 | overridevirtual | 
Emit the COFF section that holds the line table information.
Implements llvm::AsmPrinterHandler.
Definition at line 655 of file CodeViewDebug.cpp.
References llvm::DebugHandlerBase::Asm, P, and llvm::codeview::Symbols.
| 
 | inlineprotected | 
Check if the current module is in Fortran.
Definition at line 518 of file CodeViewDebug.h.