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

Inherited from DebugHandlerBase:

Inherited from AsmPrinterHandler:

Methods

CodeViewDebug(llvm::AsmPrinter* AP)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:490

Parameters

llvm::AsmPrinter* AP

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:414

Parameters

const llvm::DIType* Ty
codeview::TypeIndex TI

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:492

Parameters

llvm::Module* M

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:244

Parameters

llvm::CodeViewDebug::LocalVariable& Var
const DbgValueHistoryMap::Entries& Entries

void clear()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:296

llvm::ClassInfo collectClassInfo(
    const llvm::DICompositeType* Ty)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:453

Parameters

const llvm::DICompositeType* Ty

void collectDebugInfoForGlobals()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:331

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)

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)

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:361

Parameters

const llvm::DISubprogram* SP

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:98

Parameters

uint16_t CVRegister
int Offset

void emitBuildInfo()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:316

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()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:314

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:336

Parameters

const llvm::CodeViewDebug::CVGlobalVariable& CVGV

void emitDebugInfoForGlobals()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:332

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:328

Parameters

const std::vector< std::pair<std::string, const DIType*>>& UDTs

void emitDeferredCompleteTypes()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:450

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)

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)

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()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:318

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)

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)

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)

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()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:312

void emitStaticConstMemberList()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:337

void emitTypeGlobalHashes()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:310

void emitTypeInformation()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:308

void endCVSubsection(llvm::MCSymbol* EndLabel)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:343

Parameters

llvm::MCSymbol* EndLabel

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()

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:348

Parameters

llvm::MCSymbol* SymEnd

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:290

Parameters

const llvm::DIFile* File

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:473

Parameters

const llvm::DIScope* Scope

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:405

Parameters

const llvm::DISubprogram* SP
const llvm::DICompositeType* Class

unsigned int getPointerSizeInBytes()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:475

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:400

Parameters

const llvm::DIDerivedType* PtrTy
const llvm::DISubroutineType* SubroutineTy

codeview::TypeIndex getVBPTypeIndex()

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:410

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)

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:417

Parameters

const llvm::DIDerivedType* 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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:420

Parameters

const llvm::DIBasicType* 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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:434

Parameters

const llvm::DICompositeType* 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)

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)

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:419

Parameters

const llvm::DIStringType* 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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:429

Parameters

const llvm::DIDerivedType* Ty

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:294

Parameters

const llvm::DebugLoc& DL
const llvm::MachineFunction* MF

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)

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)

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)

Declared at: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h:298

Parameters

const llvm::DISubprogram* SP

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)

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