mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Do not get confused by multiple empty lexical scopes inlined at one location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135232 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
291e767dcf
commit
0bf164605d
@ -1587,18 +1587,22 @@ DbgScope *DwarfDebug::getOrCreateDbgScope(DebugLoc DL) {
|
||||
}
|
||||
|
||||
getOrCreateAbstractScope(Scope);
|
||||
DbgScope *WScope = DbgScopeMap.lookup(InlinedAt);
|
||||
DbgScope *WScope = NULL;
|
||||
const MDNode *Key = InlinedAt;
|
||||
if (const MDNode *Nest = DILocation(InlinedAt).getOrigLocation())
|
||||
Key = Nest;
|
||||
WScope = DbgScopeMap.lookup(Key);
|
||||
if (WScope)
|
||||
return WScope;
|
||||
|
||||
WScope = new DbgScope(NULL, DIDescriptor(Scope), InlinedAt);
|
||||
DbgScopeMap.insert(std::make_pair(InlinedAt, WScope));
|
||||
DbgScopeMap[Key] = WScope;
|
||||
DbgScope *Parent =
|
||||
getOrCreateDbgScope(DebugLoc::getFromDILocation(InlinedAt));
|
||||
WScope->setParent(Parent);
|
||||
Parent->addScope(WScope);
|
||||
|
||||
ConcreteScopes[InlinedAt] = WScope;
|
||||
ConcreteScopes[Key] = WScope;
|
||||
|
||||
return WScope;
|
||||
}
|
||||
@ -2083,8 +2087,12 @@ DbgScope *DwarfDebug::findDbgScope(DebugLoc DL) {
|
||||
|
||||
DbgScope *Scope = NULL;
|
||||
LLVMContext &Ctx = Asm->MF->getFunction()->getContext();
|
||||
if (const MDNode *IA = DL.getInlinedAt(Ctx))
|
||||
Scope = ConcreteScopes.lookup(IA);
|
||||
if (const MDNode *IA = DL.getInlinedAt(Ctx)) {
|
||||
const MDNode *Key = IA;
|
||||
if (const MDNode *Nest = DILocation(IA).getOrigLocation())
|
||||
Key = Nest;
|
||||
Scope = ConcreteScopes.lookup(Key);
|
||||
}
|
||||
if (Scope == 0)
|
||||
Scope = DbgScopeMap.lookup(DL.getScope(Ctx));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user