mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
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
This commit is contained in:
parent
da2e1e314b
commit
35584a26be
@ -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)
|
||||
|
3256
test/DebugInfo/2009-05-13-VariableScope.ll
Normal file
3256
test/DebugInfo/2009-05-13-VariableScope.ll
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user