mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +00:00
Reapply "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself."
Originally reverted in r213432 with flakey failures on an ASan self-host build. After reduction it seems to be the same issue fixed in r213805 (ArgPromo + DebugInfo: Handle updating debug info over multiple applications of argument promotion) and r213952 (by having LiveDebugVariables strip dbg_value intrinsics in functions that are not described by debug info). Though I cannot explain why this failure was flakey... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214761 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -137,6 +137,8 @@ LexicalScope *LexicalScopes::findLexicalScope(DebugLoc DL) {
|
||||
/// getOrCreateLexicalScope - Find lexical scope for the given DebugLoc. If
|
||||
/// not available then create new lexical scope.
|
||||
LexicalScope *LexicalScopes::getOrCreateLexicalScope(DebugLoc DL) {
|
||||
if (DL.isUnknown())
|
||||
return nullptr;
|
||||
MDNode *Scope = nullptr;
|
||||
MDNode *InlinedAt = nullptr;
|
||||
DL.getScopeAndInlinedAt(Scope, InlinedAt, MF->getFunction()->getContext());
|
||||
@@ -172,9 +174,12 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
|
||||
std::make_tuple(Parent, DIDescriptor(Scope),
|
||||
nullptr, false)).first;
|
||||
|
||||
if (!Parent && DIDescriptor(Scope).isSubprogram() &&
|
||||
DISubprogram(Scope).describes(MF->getFunction()))
|
||||
if (!Parent) {
|
||||
assert(DIDescriptor(Scope).isSubprogram());
|
||||
assert(DISubprogram(Scope).describes(MF->getFunction()));
|
||||
assert(!CurrentFnLexicalScope);
|
||||
CurrentFnLexicalScope = &I->second;
|
||||
}
|
||||
|
||||
return &I->second;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user