summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-11-01 17:21:26 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-11-01 17:21:26 +0000
commitf6dac29a832a02dd3921cf1395ae127a39057116 (patch)
tree38bde44906a943ac29f0f64a4ee6749934fd2d08 /llvm/lib
parent246c4fb5d91c638b337635821c7d792fe633d602 (diff)
downloadbcm5719-llvm-f6dac29a832a02dd3921cf1395ae127a39057116.tar.gz
bcm5719-llvm-f6dac29a832a02dd3921cf1395ae127a39057116.zip
Sink DwarfDebug::AbstractSPDies down into DwarfFile
This is the first big step to allowing gmlt-like inline scope information in the skeleton CU. While this commit doesn't change the functionality, it's only a small step to call "constructAbstractSubprogramDIE" on both the InfoHolder and the SkeletonHolder (when in use) and that will at least create the abstract SP dies in that case, though still not creating the other subprograms. llvm-svn: 221051
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp8
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h7
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfFile.h7
3 files changed, 11 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
index bd63279f2fc..6571b54cfcf 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
@@ -416,7 +416,7 @@ DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) {
DISubprogram InlinedSP = getDISubprogram(DS);
// Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram
// was inlined from another compile unit.
- DIE *OriginDIE = DD->getAbstractSPDies()[InlinedSP];
+ DIE *OriginDIE = DU->getAbstractSPDies()[InlinedSP];
assert(OriginDIE && "Unable to find original DIE for an inlined subprogram.");
auto ScopeDIE = make_unique<DIE>(dwarf::DW_TAG_inlined_subroutine);
@@ -588,7 +588,7 @@ DIE *DwarfCompileUnit::createAndAddScopeChildren(LexicalScope *Scope,
void
DwarfCompileUnit::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) {
- DIE *&AbsDef = DD->getAbstractSPDies()[Scope->getScopeNode()];
+ DIE *&AbsDef = DU->getAbstractSPDies()[Scope->getScopeNode()];
if (AbsDef)
return;
@@ -648,7 +648,7 @@ DwarfCompileUnit::constructImportedEntityDIE(const DIImportedEntity &Module) {
void DwarfCompileUnit::finishSubprogramDefinition(DISubprogram SP) {
DIE *D = getDIE(SP);
- if (DIE *AbsSPDIE = DD->getAbstractSPDies().lookup(SP)) {
+ if (DIE *AbsSPDIE = DU->getAbstractSPDies().lookup(SP)) {
if (D)
// If this subprogram has an abstract definition, reference that
addDIEEntry(*D, dwarf::DW_AT_abstract_origin, *AbsSPDIE);
@@ -671,7 +671,7 @@ void DwarfCompileUnit::collectDeadVariables(DISubprogram SP) {
if (Variables.getNumElements() == 0)
return;
- DIE *SPDIE = DD->getAbstractSPDies().lookup(SP);
+ DIE *SPDIE = DU->getAbstractSPDies().lookup(SP);
if (!SPDIE)
SPDIE = getDIE(SP);
assert(SPDIE);
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
index c1215c046f7..849580af7aa 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -190,9 +190,6 @@ class DwarfDebug : public AsmPrinterHandler {
LexicalScopes LScopes;
- // Collection of abstract subprogram DIEs.
- DenseMap<const MDNode *, DIE *> AbstractSPDies;
-
// Collection of abstract variables.
DenseMap<const MDNode *, std::unique_ptr<DbgVariable>> AbstractVariables;
SmallVector<std::unique_ptr<DbgVariable>, 64> ConcreteVariables;
@@ -650,10 +647,6 @@ public:
// FIXME: Sink these functions down into DwarfFile/Dwarf*Unit.
- DenseMap<const MDNode *, DIE *> &getAbstractSPDies() {
- return AbstractSPDies;
- }
-
SmallPtrSet<const MDNode *, 16> &getProcessedSPNodes() {
return ProcessedSPNodes;
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfFile.h b/llvm/lib/CodeGen/AsmPrinter/DwarfFile.h
index e4dc674bb69..40454cec3f4 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfFile.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfFile.h
@@ -54,6 +54,9 @@ class DwarfFile {
// Collection of dbg variables of a scope.
DenseMap<LexicalScope *, SmallVector<DbgVariable *, 8>> ScopeVariables;
+ // Collection of abstract subprogram DIEs.
+ DenseMap<const MDNode *, DIE *> AbstractSPDies;
+
public:
DwarfFile(AsmPrinter *AP, DwarfDebug &DD, StringRef Pref,
BumpPtrAllocator &DA);
@@ -93,6 +96,10 @@ public:
DenseMap<LexicalScope *, SmallVector<DbgVariable *, 8>> &getScopeVariables() {
return ScopeVariables;
}
+
+ DenseMap<const MDNode *, DIE *> &getAbstractSPDies() {
+ return AbstractSPDies;
+ }
};
}
#endif
OpenPOWER on IntegriCloud