mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
DebugInfo: Delete subclasses of DIScope
Delete subclasses of (the already defunct) `DIScope`, updating users to use the raw pointers from the `Metadata` hierarchy directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235356 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
DwarfCompileUnit::DwarfCompileUnit(unsigned UID, DICompileUnit Node,
|
||||
DwarfCompileUnit::DwarfCompileUnit(unsigned UID, const MDCompileUnit *Node,
|
||||
AsmPrinter *A, DwarfDebug *DW,
|
||||
DwarfFile *DWU)
|
||||
: DwarfUnit(UID, dwarf::DW_TAG_compile_unit, Node, A, DW, DWU),
|
||||
@@ -276,7 +276,7 @@ void DwarfCompileUnit::attachLowHighPC(DIE &D, const MCSymbol *Begin,
|
||||
// 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.
|
||||
DIE &DwarfCompileUnit::updateSubprogramScopeDIE(DISubprogram SP) {
|
||||
DIE &DwarfCompileUnit::updateSubprogramScopeDIE(const MDSubprogram *SP) {
|
||||
DIE *SPDie = getOrCreateSubprogramDIE(SP, includeMinimalInlineScopes());
|
||||
|
||||
attachLowHighPC(*SPDie, Asm->getFunctionBegin(), Asm->getFunctionEnd());
|
||||
@@ -562,7 +562,7 @@ void DwarfCompileUnit::constructSubprogramScopeDIE(LexicalScope *Scope) {
|
||||
assert(Scope && Scope->getScopeNode());
|
||||
assert(!Scope->getInlinedAt());
|
||||
assert(!Scope->isAbstractScope());
|
||||
DISubprogram Sub = cast<MDSubprogram>(Scope->getScopeNode());
|
||||
auto *Sub = cast<MDSubprogram>(Scope->getScopeNode());
|
||||
|
||||
DD->getProcessedSPNodes().insert(Sub);
|
||||
|
||||
@@ -604,7 +604,7 @@ DwarfCompileUnit::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) {
|
||||
if (AbsDef)
|
||||
return;
|
||||
|
||||
DISubprogram SP = cast<MDSubprogram>(Scope->getScopeNode());
|
||||
auto *SP = cast<MDSubprogram>(Scope->getScopeNode());
|
||||
|
||||
DIE *ContextDIE;
|
||||
|
||||
@@ -658,7 +658,7 @@ DwarfCompileUnit::constructImportedEntityDIE(const DIImportedEntity &Module) {
|
||||
return IMDie;
|
||||
}
|
||||
|
||||
void DwarfCompileUnit::finishSubprogramDefinition(DISubprogram SP) {
|
||||
void DwarfCompileUnit::finishSubprogramDefinition(const MDSubprogram *SP) {
|
||||
DIE *D = getDIE(SP);
|
||||
if (DIE *AbsSPDIE = DU->getAbstractSPDies().lookup(SP)) {
|
||||
if (D)
|
||||
@@ -675,7 +675,7 @@ void DwarfCompileUnit::finishSubprogramDefinition(DISubprogram SP) {
|
||||
applySubprogramAttributesToDefinition(SP, *D);
|
||||
}
|
||||
}
|
||||
void DwarfCompileUnit::collectDeadVariables(DISubprogram SP) {
|
||||
void DwarfCompileUnit::collectDeadVariables(const MDSubprogram *SP) {
|
||||
assert(SP && "CU's subprogram list contains a non-subprogram");
|
||||
assert(SP->isDefinition() &&
|
||||
"CU's subprogram list contains a subprogram declaration");
|
||||
@@ -805,8 +805,8 @@ void DwarfCompileUnit::addExpr(DIELoc &Die, dwarf::Form Form,
|
||||
Die.addValue((dwarf::Attribute)0, Form, Value);
|
||||
}
|
||||
|
||||
void DwarfCompileUnit::applySubprogramAttributesToDefinition(DISubprogram SP,
|
||||
DIE &SPDie) {
|
||||
void DwarfCompileUnit::applySubprogramAttributesToDefinition(
|
||||
const MDSubprogram *SP, DIE &SPDie) {
|
||||
auto *SPDecl = SP->getDeclaration();
|
||||
auto *Context = resolve(SPDecl ? SPDecl->getScope() : SP->getScope());
|
||||
applySubprogramAttributes(SP, SPDie, includeMinimalInlineScopes());
|
||||
|
@@ -66,7 +66,7 @@ class DwarfCompileUnit : public DwarfUnit {
|
||||
bool includeMinimalInlineScopes() const;
|
||||
|
||||
public:
|
||||
DwarfCompileUnit(unsigned UID, DICompileUnit Node, AsmPrinter *A,
|
||||
DwarfCompileUnit(unsigned UID, const MDCompileUnit *Node, AsmPrinter *A,
|
||||
DwarfDebug *DW, DwarfFile *DWU);
|
||||
|
||||
DwarfCompileUnit *getSkeleton() const {
|
||||
@@ -113,7 +113,7 @@ public:
|
||||
/// 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.
|
||||
DIE &updateSubprogramScopeDIE(DISubprogram SP);
|
||||
DIE &updateSubprogramScopeDIE(const MDSubprogram *SP);
|
||||
|
||||
void constructScopeDIE(LexicalScope *Scope,
|
||||
SmallVectorImpl<std::unique_ptr<DIE>> &FinalChildren);
|
||||
@@ -158,9 +158,9 @@ public:
|
||||
std::unique_ptr<DIE>
|
||||
constructImportedEntityDIE(const DIImportedEntity &Module);
|
||||
|
||||
void finishSubprogramDefinition(DISubprogram SP);
|
||||
void finishSubprogramDefinition(const MDSubprogram *SP);
|
||||
|
||||
void collectDeadVariables(DISubprogram SP);
|
||||
void collectDeadVariables(const MDSubprogram *SP);
|
||||
|
||||
/// Set the skeleton unit associated with this unit.
|
||||
void setSkeleton(DwarfCompileUnit &Skel) { Skeleton = &Skel; }
|
||||
@@ -215,7 +215,8 @@ public:
|
||||
/// Add a Dwarf expression attribute data and value.
|
||||
void addExpr(DIELoc &Die, dwarf::Form Form, const MCExpr *Expr);
|
||||
|
||||
void applySubprogramAttributesToDefinition(DISubprogram SP, DIE &SPDie);
|
||||
void applySubprogramAttributesToDefinition(const MDSubprogram *SP,
|
||||
DIE &SPDie);
|
||||
|
||||
/// getRangeLists - Get the vector of range lists.
|
||||
const SmallVectorImpl<RangeSpanList> &getRangeLists() const {
|
||||
|
@@ -277,7 +277,7 @@ static StringRef getObjCMethodName(StringRef In) {
|
||||
// TODO: Determine whether or not we should add names for programs
|
||||
// that do not have a DW_AT_name or DW_AT_linkage_name field - this
|
||||
// is only slightly different than the lookup of non-standard ObjC names.
|
||||
void DwarfDebug::addSubprogramNames(DISubprogram SP, DIE &Die) {
|
||||
void DwarfDebug::addSubprogramNames(const MDSubprogram *SP, DIE &Die) {
|
||||
if (!SP->isDefinition())
|
||||
return;
|
||||
addAccelName(SP->getName(), Die);
|
||||
@@ -363,7 +363,8 @@ void DwarfDebug::addGnuPubAttributes(DwarfUnit &U, DIE &D) const {
|
||||
|
||||
// Create new DwarfCompileUnit for the given metadata node with tag
|
||||
// DW_TAG_compile_unit.
|
||||
DwarfCompileUnit &DwarfDebug::constructDwarfCompileUnit(DICompileUnit DIUnit) {
|
||||
DwarfCompileUnit &
|
||||
DwarfDebug::constructDwarfCompileUnit(const MDCompileUnit *DIUnit) {
|
||||
StringRef FN = DIUnit->getFilename();
|
||||
CompilationDir = DIUnit->getDirectory();
|
||||
|
||||
@@ -446,7 +447,7 @@ void DwarfDebug::beginModule() {
|
||||
SingleCU = CU_Nodes->getNumOperands() == 1;
|
||||
|
||||
for (MDNode *N : CU_Nodes->operands()) {
|
||||
DICompileUnit CUNode = cast<MDCompileUnit>(N);
|
||||
auto *CUNode = cast<MDCompileUnit>(N);
|
||||
DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
|
||||
for (auto *IE : CUNode->getImportedEntities())
|
||||
ScopesWithImportedEntities.push_back(std::make_pair(IE->getScope(), IE));
|
||||
@@ -512,7 +513,7 @@ void DwarfDebug::collectDeadVariables() {
|
||||
|
||||
if (NamedMDNode *CU_Nodes = M->getNamedMetadata("llvm.dbg.cu")) {
|
||||
for (MDNode *N : CU_Nodes->operands()) {
|
||||
DICompileUnit TheCU = cast<MDCompileUnit>(N);
|
||||
auto *TheCU = cast<MDCompileUnit>(N);
|
||||
// Construct subprogram DIE and add variables DIEs.
|
||||
DwarfCompileUnit *SPCU =
|
||||
static_cast<DwarfCompileUnit *>(CUMap.lookup(TheCU));
|
||||
@@ -872,7 +873,8 @@ DwarfDebug::buildLocationList(SmallVectorImpl<DebugLocEntry> &DebugLoc,
|
||||
|
||||
|
||||
// Find variables for each lexical scope.
|
||||
void DwarfDebug::collectVariableInfo(DwarfCompileUnit &TheCU, DISubprogram SP,
|
||||
void DwarfDebug::collectVariableInfo(DwarfCompileUnit &TheCU,
|
||||
const MDSubprogram *SP,
|
||||
DenseSet<InlinedVariable> &Processed) {
|
||||
// Grab the variable info that was squirreled away in the MMI side-table.
|
||||
collectVariableInfoFromMMITable(Processed);
|
||||
@@ -1185,7 +1187,7 @@ void DwarfDebug::endFunction(const MachineFunction *MF) {
|
||||
Asm->OutStreamer.getContext().setDwarfCompileUnitID(0);
|
||||
|
||||
LexicalScope *FnScope = LScopes.getCurrentFunctionScope();
|
||||
DISubprogram SP = cast<MDSubprogram>(FnScope->getScopeNode());
|
||||
auto *SP = cast<MDSubprogram>(FnScope->getScopeNode());
|
||||
DwarfCompileUnit &TheCU = *SPMap.lookup(SP);
|
||||
|
||||
DenseSet<InlinedVariable> ProcessedVars;
|
||||
@@ -1215,7 +1217,7 @@ void DwarfDebug::endFunction(const MachineFunction *MF) {
|
||||
#endif
|
||||
// Construct abstract scopes.
|
||||
for (LexicalScope *AScope : LScopes.getAbstractScopesList()) {
|
||||
DISubprogram SP = cast<MDSubprogram>(AScope->getScopeNode());
|
||||
auto *SP = cast<MDSubprogram>(AScope->getScopeNode());
|
||||
// Collect info for variables that were optimized out.
|
||||
for (DIVariable DV : SP->getVariables()) {
|
||||
if (!ProcessedVars.insert(InlinedVariable(DV, nullptr)).second)
|
||||
|
@@ -451,7 +451,7 @@ class DwarfDebug : public AsmPrinterHandler {
|
||||
|
||||
/// \brief Create new DwarfCompileUnit for the given metadata node with tag
|
||||
/// DW_TAG_compile_unit.
|
||||
DwarfCompileUnit &constructDwarfCompileUnit(DICompileUnit DIUnit);
|
||||
DwarfCompileUnit &constructDwarfCompileUnit(const MDCompileUnit *DIUnit);
|
||||
|
||||
/// \brief Construct imported_module or imported_declaration DIE.
|
||||
void constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
@@ -468,7 +468,7 @@ class DwarfDebug : public AsmPrinterHandler {
|
||||
void identifyScopeMarkers();
|
||||
|
||||
/// \brief Populate LexicalScope entries with variables' info.
|
||||
void collectVariableInfo(DwarfCompileUnit &TheCU, DISubprogram SP,
|
||||
void collectVariableInfo(DwarfCompileUnit &TheCU, const MDSubprogram *SP,
|
||||
DenseSet<InlinedVariable> &ProcessedVars);
|
||||
|
||||
/// \brief Build the location list for all DBG_VALUEs in the
|
||||
@@ -581,7 +581,7 @@ public:
|
||||
/// or another context nested inside a subprogram.
|
||||
bool isSubprogramContext(const MDNode *Context);
|
||||
|
||||
void addSubprogramNames(DISubprogram SP, DIE &Die);
|
||||
void addSubprogramNames(const MDSubprogram *SP, DIE &Die);
|
||||
|
||||
AddressPool &getAddressPool() { return AddrPool; }
|
||||
|
||||
|
@@ -28,7 +28,6 @@ class DwarfUnit;
|
||||
class DIEAbbrev;
|
||||
class MCSymbol;
|
||||
class DIE;
|
||||
class DISubprogram;
|
||||
class LexicalScope;
|
||||
class StringRef;
|
||||
class DwarfDebug;
|
||||
|
@@ -63,9 +63,9 @@ bool DIEDwarfExpression::isFrameRegister(unsigned MachineReg) {
|
||||
return MachineReg == TRI.getFrameRegister(*AP.MF);
|
||||
}
|
||||
|
||||
|
||||
DwarfUnit::DwarfUnit(unsigned UID, dwarf::Tag UnitTag, DICompileUnit Node,
|
||||
AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU)
|
||||
DwarfUnit::DwarfUnit(unsigned UID, dwarf::Tag UnitTag,
|
||||
const MDCompileUnit *Node, AsmPrinter *A, DwarfDebug *DW,
|
||||
DwarfFile *DWU)
|
||||
: UniqueID(UID), CUNode(Node), UnitDie(UnitTag), DebugInfoOffset(0), Asm(A),
|
||||
DD(DW), DU(DWU), IndexTyDie(nullptr), Section(nullptr) {
|
||||
assert(UnitTag == dwarf::DW_TAG_compile_unit ||
|
||||
@@ -367,7 +367,7 @@ void DwarfUnit::addSourceLine(DIE &Die, DIGlobalVariable G) {
|
||||
addSourceLine(Die, G->getLine(), G->getFilename(), G->getDirectory());
|
||||
}
|
||||
|
||||
void DwarfUnit::addSourceLine(DIE &Die, DISubprogram SP) {
|
||||
void DwarfUnit::addSourceLine(DIE &Die, const MDSubprogram *SP) {
|
||||
assert(SP);
|
||||
|
||||
addSourceLine(Die, SP->getLine(), SP->getFilename(), SP->getDirectory());
|
||||
@@ -385,7 +385,7 @@ void DwarfUnit::addSourceLine(DIE &Die, DIObjCProperty Ty) {
|
||||
addSourceLine(Die, Ty->getLine(), Ty->getFilename(), Ty->getDirectory());
|
||||
}
|
||||
|
||||
void DwarfUnit::addSourceLine(DIE &Die, DINameSpace NS) {
|
||||
void DwarfUnit::addSourceLine(DIE &Die, const MDNamespace *NS) {
|
||||
addSourceLine(Die, NS->getLine(), NS->getFilename(), NS->getDirectory());
|
||||
}
|
||||
|
||||
@@ -1101,7 +1101,7 @@ DwarfUnit::constructTemplateValueParameterDIE(DIE &Buffer,
|
||||
}
|
||||
}
|
||||
|
||||
DIE *DwarfUnit::getOrCreateNameSpace(DINameSpace NS) {
|
||||
DIE *DwarfUnit::getOrCreateNameSpace(const MDNamespace *NS) {
|
||||
// Construct the context before querying for the existence of the DIE in case
|
||||
// such construction creates the DIE.
|
||||
DIE *ContextDIE = getOrCreateContextDIE(NS->getScope());
|
||||
@@ -1121,7 +1121,7 @@ DIE *DwarfUnit::getOrCreateNameSpace(DINameSpace NS) {
|
||||
return &NDie;
|
||||
}
|
||||
|
||||
DIE *DwarfUnit::getOrCreateSubprogramDIE(DISubprogram SP, bool Minimal) {
|
||||
DIE *DwarfUnit::getOrCreateSubprogramDIE(const MDSubprogram *SP, bool Minimal) {
|
||||
// Construct the context before querying for the existence of the DIE in case
|
||||
// such construction creates the DIE (as is the case for member function
|
||||
// declarations).
|
||||
@@ -1152,7 +1152,7 @@ DIE *DwarfUnit::getOrCreateSubprogramDIE(DISubprogram SP, bool Minimal) {
|
||||
return &SPDie;
|
||||
}
|
||||
|
||||
bool DwarfUnit::applySubprogramDefinitionAttributes(DISubprogram SP,
|
||||
bool DwarfUnit::applySubprogramDefinitionAttributes(const MDSubprogram *SP,
|
||||
DIE &SPDie) {
|
||||
DIE *DeclDie = nullptr;
|
||||
StringRef DeclLinkageName;
|
||||
@@ -1184,7 +1184,7 @@ bool DwarfUnit::applySubprogramDefinitionAttributes(DISubprogram SP,
|
||||
return true;
|
||||
}
|
||||
|
||||
void DwarfUnit::applySubprogramAttributes(DISubprogram SP, DIE &SPDie,
|
||||
void DwarfUnit::applySubprogramAttributes(const MDSubprogram *SP, DIE &SPDie,
|
||||
bool Minimal) {
|
||||
if (!Minimal)
|
||||
if (applySubprogramDefinitionAttributes(SP, SPDie))
|
||||
|
@@ -71,7 +71,7 @@ protected:
|
||||
unsigned UniqueID;
|
||||
|
||||
/// MDNode for the compile unit.
|
||||
DICompileUnit CUNode;
|
||||
const MDCompileUnit *CUNode;
|
||||
|
||||
/// Unit debug information entry.
|
||||
DIE UnitDie;
|
||||
@@ -117,7 +117,7 @@ protected:
|
||||
/// The section this unit will be emitted in.
|
||||
const MCSection *Section;
|
||||
|
||||
DwarfUnit(unsigned UID, dwarf::Tag, DICompileUnit CU, AsmPrinter *A,
|
||||
DwarfUnit(unsigned UID, dwarf::Tag, const MDCompileUnit *CU, AsmPrinter *A,
|
||||
DwarfDebug *DW, DwarfFile *DWU);
|
||||
|
||||
/// \brief Add a string attribute data and value.
|
||||
@@ -127,7 +127,7 @@ protected:
|
||||
|
||||
void addIndexedString(DIE &Die, dwarf::Attribute Attribute, StringRef Str);
|
||||
|
||||
bool applySubprogramDefinitionAttributes(DISubprogram SP, DIE &SPDie);
|
||||
bool applySubprogramDefinitionAttributes(const MDSubprogram *SP, DIE &SPDie);
|
||||
|
||||
public:
|
||||
virtual ~DwarfUnit();
|
||||
@@ -143,7 +143,7 @@ public:
|
||||
AsmPrinter* getAsmPrinter() const { return Asm; }
|
||||
unsigned getUniqueID() const { return UniqueID; }
|
||||
uint16_t getLanguage() const { return CUNode->getSourceLanguage(); }
|
||||
DICompileUnit getCUNode() const { return CUNode; }
|
||||
const MDCompileUnit *getCUNode() const { return CUNode; }
|
||||
DIE &getUnitDie() { return UnitDie; }
|
||||
|
||||
unsigned getDebugInfoOffset() const { return DebugInfoOffset; }
|
||||
@@ -248,9 +248,9 @@ public:
|
||||
StringRef Directory);
|
||||
void addSourceLine(DIE &Die, DIVariable V);
|
||||
void addSourceLine(DIE &Die, DIGlobalVariable G);
|
||||
void addSourceLine(DIE &Die, DISubprogram SP);
|
||||
void addSourceLine(DIE &Die, const MDSubprogram *SP);
|
||||
void addSourceLine(DIE &Die, const MDType *Ty);
|
||||
void addSourceLine(DIE &Die, DINameSpace NS);
|
||||
void addSourceLine(DIE &Die, const MDNamespace *NS);
|
||||
void addSourceLine(DIE &Die, DIObjCProperty Ty);
|
||||
|
||||
/// \brief Add constant value entry in variable DIE.
|
||||
@@ -297,10 +297,10 @@ public:
|
||||
void addType(DIE &Entity, const MDType *Ty,
|
||||
dwarf::Attribute Attribute = dwarf::DW_AT_type);
|
||||
|
||||
DIE *getOrCreateNameSpace(DINameSpace NS);
|
||||
DIE *getOrCreateSubprogramDIE(DISubprogram SP, bool Minimal = false);
|
||||
DIE *getOrCreateNameSpace(const MDNamespace *NS);
|
||||
DIE *getOrCreateSubprogramDIE(const MDSubprogram *SP, bool Minimal = false);
|
||||
|
||||
void applySubprogramAttributes(DISubprogram SP, DIE &SPDie,
|
||||
void applySubprogramAttributes(const MDSubprogram *SP, DIE &SPDie,
|
||||
bool Minimal = false);
|
||||
|
||||
/// \brief Find existing DIE or create new DIE for the given type.
|
||||
|
@@ -191,7 +191,7 @@ void WinCodeViewLineTables::emitDebugInfoForFunction(const Function *GV) {
|
||||
|
||||
StringRef GVName = GV->getName();
|
||||
StringRef FuncName;
|
||||
if (DISubprogram SP = getDISubprogram(GV))
|
||||
if (auto *SP = getDISubprogram(GV))
|
||||
FuncName = SP->getDisplayName();
|
||||
|
||||
// FIXME Clang currently sets DisplayName to "bar" for a C++
|
||||
|
Reference in New Issue
Block a user