class DwarfCompileUnit

Declaration

class DwarfCompileUnit : public DwarfUnit { /* full declaration omitted */ };

Description

This dwarf writer support class manages information associated with a source file.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:46

Inherits from: DwarfUnit

Member Variables

private unsigned int UniqueID
A numeric ID unique among all CUs in the module
private bool HasRangeLists = false
private llvm::MCSymbol* LineTableStartSym
The start of the unit line section, this is also reused in appyStmtList.
private llvm::DwarfCompileUnit* Skeleton = nullptr
Skeleton unit associated with this unit.
private llvm::MCSymbol* LabelBegin = nullptr
The start of the unit within its section.
private llvm::MCSymbol* MacroLabelBegin
The start of the unit macro info within macro section.
private llvm::DwarfCompileUnit::ImportedEntityMap ImportedEntities
private StringMap<const llvm::DIE*> GlobalNames
GlobalNames - A map of globally visible named entities for this unit.
private StringMap<const llvm::DIE*> GlobalTypes
GlobalTypes - A map of globally visible types for this unit.
private SmallVector<llvm::RangeSpan, 2> CURanges
private const llvm::MCSymbol* BaseAddress = nullptr
private DenseMap<const llvm::MDNode*, llvm::DIE*> AbstractSPDies
private DenseMap<const llvm::DINode*, std::unique_ptr<DbgEntity>> AbstractEntities
private uint64_t DWOId = 0
DWO ID for correlating skeleton and split units.
private const llvm::DIFile* LastFile = nullptr
private unsigned int LastFileID
public std::vector<BaseTypeRef> ExprRefedBaseTypes

Inherited from DwarfUnit:

protected CUNode
protected DIEValueAllocator
protected Asm
protected EndLabel = nullptr
protected DD
protected DU
protected IndexTyDie = nullptr
protected MDNodeToDieMap
protected DIEBlocks
protected DIELocs
protected ContainingTypeMap

Method Overview

Inherited from DwarfUnit:

Inherited from DIEUnit:

Methods

DwarfCompileUnit(
    unsigned int UID,
    const llvm::DICompileUnit* Node,
    llvm::AsmPrinter* A,
    llvm::DwarfDebug* DW,
    llvm::DwarfFile* DWU,
    llvm::UnitKind Kind = UnitKind::Full)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:112

Parameters

unsigned int UID
const llvm::DICompileUnit* Node
llvm::AsmPrinter* A
llvm::DwarfDebug* DW
llvm::DwarfFile* DWU
llvm::UnitKind Kind = UnitKind::Full

void addAddrTableBase()

Description

Add the DW_AT_addr_base attribute to the unit DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:293

void addAddress(
    llvm::DIE& Die,
    dwarf::Attribute Attribute,
    const llvm::MachineLocation& Location)

Description

Add an address attribute to a die based on the location provided.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:326

Parameters

llvm::DIE& Die
dwarf::Attribute Attribute
const llvm::MachineLocation& Location

void addBaseTypeRef(llvm::DIEValueList& Die,
                    int64_t Idx)

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

Parameters

llvm::DIEValueList& Die
int64_t Idx

void addComplexAddress(
    const llvm::DbgVariable& DV,
    llvm::DIE& Die,
    dwarf::Attribute Attribute,
    const llvm::MachineLocation& Location)

Description

Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable (navigating the extra location information encoded in the type) based on the starting location. Add the DWARF information to the die.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:333

Parameters

const llvm::DbgVariable& DV
llvm::DIE& Die
dwarf::Attribute Attribute
const llvm::MachineLocation& Location

void addExpr(llvm::DIELoc& Die,
             dwarf::Form Form,
             const llvm::MCExpr* Expr)

Description

Add a Dwarf expression attribute data and value.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:342

Parameters

llvm::DIELoc& Die
dwarf::Form Form
const llvm::MCExpr* Expr

void addGlobalName(llvm::StringRef Name,
                   const llvm::DIE& Die,
                   const llvm::DIScope* Context)

Description

Add a new global name to the compile unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:305

Parameters

llvm::StringRef Name
const llvm::DIE& Die
const llvm::DIScope* Context

void addGlobalNameForTypeUnit(
    llvm::StringRef Name,
    const llvm::DIScope* Context)

Description

Add a new global name present in a type unit to this compile unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:309

Parameters

llvm::StringRef Name
const llvm::DIScope* Context

void addGlobalType(const llvm::DIType* Ty,
                   const llvm::DIE& Die,
                   const llvm::DIScope* Context)

Description

Add a new global type to the compile unit.

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

Parameters

const llvm::DIType* Ty
const llvm::DIE& Die
const llvm::DIScope* Context

void addGlobalTypeUnitType(
    const llvm::DIType* Ty,
    const llvm::DIScope* Context)

Description

Add a new global type present in a type unit to this compile unit.

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

Parameters

const llvm::DIType* Ty
const llvm::DIScope* Context

void addImportedEntity(
    const llvm::DIImportedEntity* IE)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:174

Parameters

const llvm::DIImportedEntity* IE

void addLabelAddress(llvm::DIE& Die,
                     dwarf::Attribute Attribute,
                     const llvm::MCSymbol* Label)

Description

addLabelAddress - Add a dwarf label attribute data and value using either DW_FORM_addr or DW_FORM_GNU_addr_index.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:162

Parameters

llvm::DIE& Die
dwarf::Attribute Attribute
const llvm::MCSymbol* Label

void addLocalLabelAddress(
    llvm::DIE& Die,
    dwarf::Attribute Attribute,
    const llvm::MCSymbol* Label)

Description

addLocalLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr only.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:167

Parameters

llvm::DIE& Die
dwarf::Attribute Attribute
const llvm::MCSymbol* Label

void addLocationAttribute(
    llvm::DIE* ToDIE,
    const llvm::DIGlobalVariable* GV,
    ArrayRef<llvm::DwarfCompileUnit::GlobalExpr>
        GlobalExprs)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:157

Parameters

llvm::DIE* ToDIE
const llvm::DIGlobalVariable* GV
ArrayRef<llvm::DwarfCompileUnit::GlobalExpr> GlobalExprs

void addLocationList(llvm::DIE& Die,
                     dwarf::Attribute Attribute,
                     unsigned int Index)

Description

Add a Dwarf loclistptr attribute data and value.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:338

Parameters

llvm::DIE& Die
dwarf::Attribute Attribute
unsigned int Index

void addRange(llvm::RangeSpan Range)

Description

addRange - Add an address range to the list of ranges for this unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:186

Parameters

llvm::RangeSpan Range

void addScopeRangeList(
    llvm::DIE& ScopeDIE,
    SmallVector<llvm::RangeSpan, 2> Range)

Description

A helper function to construct a RangeSpanList for a given lexical scope.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:200

Parameters

llvm::DIE& ScopeDIE
SmallVector<llvm::RangeSpan, 2> Range

void addVariableAddress(
    const llvm::DbgVariable& DV,
    llvm::DIE& Die,
    llvm::MachineLocation Location)

Description

Add DW_AT_location attribute for a DbgVariable based on provided MachineLocation.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:323

Parameters

const llvm::DbgVariable& DV
llvm::DIE& Die
llvm::MachineLocation Location

void applyLabelAttributes(
    const llvm::DbgLabel& Label,
    llvm::DIE& LabelDie)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:347

Parameters

const llvm::DbgLabel& Label
llvm::DIE& LabelDie

void applyStmtList(llvm::DIE& D)

Description

Apply the DW_AT_stmt_list from this compile unit to the specified DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:128

Parameters

llvm::DIE& D

void applySubprogramAttributesToDefinition(
    const llvm::DISubprogram* SP,
    llvm::DIE& SPDie)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:344

Parameters

const llvm::DISubprogram* SP
llvm::DIE& SPDie

void applyVariableAttributes(
    const llvm::DbgVariable& Var,
    llvm::DIE& VariableDie)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:339

Parameters

const llvm::DbgVariable& Var
llvm::DIE& VariableDie

void attachLowHighPC(llvm::DIE& D,
                     const llvm::MCSymbol* Begin,
                     const llvm::MCSymbol* End)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:188

Parameters

llvm::DIE& D
const llvm::MCSymbol* Begin
const llvm::MCSymbol* End

void attachRangesOrLowHighPC(
    llvm::DIE& D,
    const SmallVectorImpl<llvm::InsnRange>&
        Ranges)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:204

Parameters

llvm::DIE& D
const SmallVectorImpl<llvm::InsnRange>& Ranges

void attachRangesOrLowHighPC(
    llvm::DIE& D,
    SmallVector<llvm::RangeSpan, 2> Ranges)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:202

Parameters

llvm::DIE& D
SmallVector<llvm::RangeSpan, 2> Ranges

void constructAbstractSubprogramScopeDIE(
    llvm::LexicalScope* Scope)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:232

Parameters

llvm::LexicalScope* Scope

llvm::DIE& constructCallSiteEntryDIE(
    llvm::DIE& ScopeDIE,
    const llvm::DISubprogram* CalleeSP,
    bool IsTail,
    const llvm::MCSymbol* PCAddr,
    const llvm::MCSymbol* CallAddr,
    unsigned int CallReg)

Description

Construct a call site entry DIE describing a call within \p Scope to a callee described by \p CalleeSP. \p IsTail specifies whether the call is a tail call.\p PCAddr points to the PC value after the call instruction.\p CallAddr points to the PC value at the call instruction (or is null).\p CallReg is a register location for an indirect call. For direct calls the \p CallReg is set to 0.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:254

Parameters

llvm::DIE& ScopeDIE
const llvm::DISubprogram* CalleeSP
bool IsTail
const llvm::MCSymbol* PCAddr
const llvm::MCSymbol* CallAddr
unsigned int CallReg

void constructCallSiteParmEntryDIEs(
    llvm::DIE& CallSiteDIE,
    SmallVector<llvm::DbgCallSiteParam, 4>&
        Params)

Description

Construct call site parameter DIEs for the \p CallSiteDIE. The \p Params were collected by the \ref collectCallSiteParameters. Note: The order of parameters does not matter, since debuggers recognize call site parameters by the DW_AT_location attribute.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:261

Parameters

llvm::DIE& CallSiteDIE
SmallVector<llvm::DbgCallSiteParam, 4>& Params

llvm::DIE* constructImportedEntityDIE(
    const llvm::DIImportedEntity* Module)

Description

Construct import_module DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:265

Parameters

const llvm::DIImportedEntity* Module

llvm::DIE* constructInlinedScopeDIE(
    llvm::LexicalScope* Scope)

Description

This scope represents inlined body of a function. Construct DIE to represent this concrete inlined copy of the function.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:209

Parameters

llvm::LexicalScope* Scope

llvm::DIE* constructLabelDIE(
    llvm::DbgLabel& DL,
    const llvm::LexicalScope& Scope)

Description

Construct a DIE for the given DbgLabel.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:222

Parameters

llvm::DbgLabel& DL
const llvm::LexicalScope& Scope

llvm::DIE* constructLexicalScopeDIE(
    llvm::LexicalScope* Scope)

Description

Construct new DW_TAG_lexical_block for this scope and attach DW_AT_low_pc/DW_AT_high_pc labels.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:213

Parameters

llvm::LexicalScope* Scope

void constructScopeDIE(llvm::LexicalScope* Scope,
                       llvm::DIE& ParentScopeDIE)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:196

Parameters

llvm::LexicalScope* Scope
llvm::DIE& ParentScopeDIE

llvm::DIE& constructSubprogramScopeDIE(
    const llvm::DISubprogram* Sub,
    llvm::LexicalScope* Scope)

Description

Construct a DIE for this subprogram scope.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:227

Parameters

const llvm::DISubprogram* Sub
llvm::LexicalScope* Scope

llvm::DIE* constructVariableDIE(
    llvm::DbgVariable& DV,
    bool Abstract = false)

Description

constructVariableDIE - Construct a DIE for the given DbgVariable.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:216

Parameters

llvm::DbgVariable& DV
bool Abstract = false

llvm::DIE* constructVariableDIE(
    llvm::DbgVariable& DV,
    const llvm::LexicalScope& Scope,
    llvm::DIE*& ObjectPointer)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:218

Parameters

llvm::DbgVariable& DV
const llvm::LexicalScope& Scope
llvm::DIE*& ObjectPointer

llvm::DIE* constructVariableDIEImpl(
    const llvm::DbgVariable& DV,
    bool Abstract)

Description

Construct a DIE for the given DbgVariable without initializing the DbgVariable's DIE reference.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:93

Parameters

const llvm::DbgVariable& DV
bool Abstract

void createAbstractEntity(
    const llvm::DINode* Node,
    llvm::LexicalScope* Scope)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:273

Parameters

const llvm::DINode* Node
llvm::LexicalScope* Scope

llvm::DIE* createAndAddScopeChildren(
    llvm::LexicalScope* Scope,
    llvm::DIE& ScopeDIE)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:230

Parameters

llvm::LexicalScope* Scope
llvm::DIE& ScopeDIE

void createBaseTypeDIEs()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:224

void emitHeader(bool UseOffsets)

Description

Emit the header for this unit, not including the initial length field.

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

Parameters

bool UseOffsets

void finishEntityDefinition(
    const llvm::DbgEntity* Entity)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:268

Parameters

const llvm::DbgEntity* Entity

void finishNonUnitTypeDIE(
    llvm::DIE& D,
    const llvm::DICompositeType* CTy)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:109

Parameters

llvm::DIE& D
const llvm::DICompositeType* CTy

void finishSubprogramDefinition(
    const llvm::DISubprogram* SP)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:267

Parameters

const llvm::DISubprogram* SP

DenseMap<const llvm::DINode*,
         std::unique_ptr<DbgEntity>>&
getAbstractEntities()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:103

DenseMap<const llvm::MDNode*, llvm::DIE*>&
getAbstractSPDies()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:97

const llvm::MCSymbol* getBaseAddress() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:354

llvm::DwarfCompileUnit& getCU()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:170

uint64_t getDWOId() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:356

dwarf::Attribute getDwarf5OrGNUAttr(
    dwarf::Attribute Attr) const

Description

This takes a DWARF 5 attribute and returns it or a GNU analog.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:242

Parameters

dwarf::Attribute Attr

dwarf::LocationAtom getDwarf5OrGNULocationAtom(
    dwarf::LocationAtom Loc) const

Description

This takes a DWARF 5 location atom and either returns it or a GNU analog.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:245

Parameters

dwarf::LocationAtom Loc

dwarf::Tag getDwarf5OrGNUTag(dwarf::Tag Tag) const

Description

This takes a DWARF 5 tag and returns it or a GNU analog.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:239

Parameters

dwarf::Tag Tag

llvm::DbgEntity* getExistingAbstractEntity(
    const llvm::DINode* Node)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:272

Parameters

const llvm::DINode* Node

const StringMap<const llvm::DIE*>&
getGlobalNames() const

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

const StringMap<const llvm::DIE*>&
getGlobalTypes() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:319

unsigned int getHeaderSize() const

Description

Compute the size of a header for this unit, not including the initial length field.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:278

llvm::MCSymbol* getLabelBegin() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:295

unsigned int getLength()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:285

llvm::MCSymbol* getLineTableStartSym() const

Description

Get line table start symbol for this unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:131

llvm::MCSymbol* getMacroLabelBegin() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:300

llvm::DIE* getOrCreateCommonBlock(
    const llvm::DICommonBlock* CB,
    ArrayRef<llvm::DwarfCompileUnit::GlobalExpr>
        GlobalExprs)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:154

Parameters

const llvm::DICommonBlock* CB
ArrayRef<llvm::DwarfCompileUnit::GlobalExpr> GlobalExprs

llvm::DIE* getOrCreateGlobalVariableDIE(
    const llvm::DIGlobalVariable* GV,
    ArrayRef<llvm::DwarfCompileUnit::GlobalExpr>
        GlobalExprs)

Description

Get or create global variable DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:151

Parameters

const llvm::DIGlobalVariable* GV
ArrayRef<llvm::DwarfCompileUnit::GlobalExpr> GlobalExprs

unsigned int getOrCreateSourceID(
    const llvm::DIFile* File)

Description

Look up the source ID for the given file. If none currently exists, create a new ID and insert it in the line table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:172

Parameters

const llvm::DIFile* File

const SmallVectorImpl<llvm::RangeSpan>&
getRanges() const

Description

getRanges - Get the list of ranges for this unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:350

llvm::DwarfCompileUnit* getSkeleton() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:119

unsigned int getUniqueID() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:117

bool hasDwarfPubSections() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:359

bool hasRangeLists() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:116

bool includeMinimalInlineScopes() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:123

void initStmtList()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:125

bool isDwoUnit() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:95

void setBaseAddress(const llvm::MCSymbol* Base)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:353

Parameters

const llvm::MCSymbol* Base

void setDWOId(uint64_t DwoId)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:357

Parameters

uint64_t DwoId

void setSkeleton(llvm::DwarfCompileUnit& Skel)

Description

Set the skeleton unit associated with this unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:276

Parameters

llvm::DwarfCompileUnit& Skel

SmallVector<llvm::RangeSpan, 2> takeRanges()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:351

llvm::DIE& updateSubprogramScopeDIE(
    const llvm::DISubprogram* SP)

Description

Find DIE for the given subprogram and attach appropriate DW_AT_low_pc and DW_AT_high_pc attributes. If there are global variables in this scope then create and insert DIEs for these variables.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:194

Parameters

const llvm::DISubprogram* SP

bool useGNUAnalogForDwarf5Feature() const

Description

Whether to use the GNU analog for a DWARF5 tag, attribute, or location atom. Only applicable when emitting otherwise DWARF4-compliant debug info.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h:236