summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-05-13 20:33:33 +0000
committerBill Wendling <isanbard@gmail.com>2009-05-13 20:33:33 +0000
commit1d601cdaf406240930d3ddcc0be88ae245a78ae6 (patch)
tree7f0eb291fd886fd5383663a5e5767162c6ddfb7e /llvm/lib/CodeGen
parentbbbb02d463066f188c443e2ae7ce9ce5353f8b54 (diff)
downloadbcm5719-llvm-1d601cdaf406240930d3ddcc0be88ae245a78ae6.tar.gz
bcm5719-llvm-1d601cdaf406240930d3ddcc0be88ae245a78ae6.zip
Move the bookkeeping of the debug scopes back to the place where it
belonged. The variable declaration stuff wasn't happy with it where it was. Sorry that the testcase is so big. Bugpoint wasn't able to reduce it successfully. llvm-svn: 71714
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
index e9cd280906f..35539011aad 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
@@ -1286,9 +1286,9 @@ class DwarfDebug : public Dwarf {
/// DbgScopeMap - Tracks the scopes in the current function.
DenseMap<GlobalVariable *, DbgScope *> DbgScopeMap;
- /// DbgConcreteScopeMap - Tracks inlined scopes in the current function.
+ /// DbgInlinedScopeMap - Tracks inlined scopes in the current function.
DenseMap<GlobalVariable *,
- SmallVector<DbgConcreteScope *, 8> > DbgConcreteScopeMap;
+ SmallVector<DbgScope *, 8> > DbgInlinedScopeMap;
/// InlineInfo - Keep track of inlined functions and their location. This
/// information is used to populate debug_inlined section.
@@ -3434,7 +3434,7 @@ public:
if (FunctionDbgScope) {
delete FunctionDbgScope;
DbgScopeMap.clear();
- DbgConcreteScopeMap.clear();
+ DbgInlinedScopeMap.clear();
InlinedVariableScopes.clear();
FunctionDbgScope = NULL;
LexicalScopeStack.clear();
@@ -3619,6 +3619,15 @@ public:
// could be more elegant.
AddUInt(SPDie, DW_AT_inline, 0, DW_INL_declared_not_inlined);
+ // Keep track of the scope that's inlined into this function.
+ DenseMap<GlobalVariable *, SmallVector<DbgScope *, 8> >::iterator
+ SI = DbgInlinedScopeMap.find(GV);
+
+ if (SI == DbgInlinedScopeMap.end())
+ DbgInlinedScopeMap[GV].push_back(Scope);
+ else
+ SI->second.push_back(Scope);
+
AbstractInstanceRootMap[GV] = Scope;
AbstractInstanceRootList.push_back(Scope);
}
@@ -3641,15 +3650,6 @@ public:
LexicalScopeStack.back()->AddConcreteInst(ConcreteScope);
- // Keep track of the scope that's inlined into this function.
- DenseMap<GlobalVariable *, SmallVector<DbgConcreteScope *, 8> >::iterator
- SI = DbgConcreteScopeMap.find(GV);
-
- if (SI == DbgConcreteScopeMap.end())
- DbgConcreteScopeMap[GV].push_back(ConcreteScope);
- else
- SI->second.push_back(ConcreteScope);
-
// Track the start label for this inlined function.
DenseMap<GlobalVariable *, SmallVector<unsigned, 4> >::iterator
I = InlineInfo.find(GV);
@@ -3674,19 +3674,19 @@ public:
DebugTimer->startTimer();
GlobalVariable *GV = SP.getGV();
- DenseMap<GlobalVariable *, SmallVector<DbgConcreteScope *, 8> >::iterator
- I = DbgConcreteScopeMap.find(GV);
+ DenseMap<GlobalVariable *, SmallVector<DbgScope *, 8> >::iterator
+ I = DbgInlinedScopeMap.find(GV);
- if (I == DbgConcreteScopeMap.end()) {
+ if (I == DbgInlinedScopeMap.end()) {
if (TimePassesIsEnabled)
DebugTimer->stopTimer();
return 0;
}
- SmallVector<DbgConcreteScope *, 8> &Scopes = I->second;
+ SmallVector<DbgScope *, 8> &Scopes = I->second;
assert(!Scopes.empty() && "We should have at least one debug scope!");
- DbgConcreteScope *Scope = Scopes.back(); Scopes.pop_back();
+ DbgScope *Scope = Scopes.back(); Scopes.pop_back();
unsigned ID = MMI->NextLabelID();
MMI->RecordUsedDbgLabel(ID);
Scope->setEndLabelID(ID);
@@ -3714,9 +3714,9 @@ public:
return;
}
- DenseMap<GlobalVariable *, SmallVector<DbgConcreteScope *, 8> >::iterator
- I = DbgConcreteScopeMap.find(SP.getGV());
- if (I != DbgConcreteScopeMap.end())
+ DenseMap<GlobalVariable *, SmallVector<DbgScope *, 8> >::iterator
+ I = DbgInlinedScopeMap.find(SP.getGV());
+ if (I != DbgInlinedScopeMap.end())
InlinedVariableScopes[DeclareMI] = I->second.back();
if (TimePassesIsEnabled)
OpenPOWER on IntegriCloud