mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
Revert "Reapply "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself.""""
After a successful build it seems to have come back on a later build. This reverts commit r213391. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213432 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -789,7 +789,8 @@ void DwarfDebug::finishVariableDefinitions() {
|
|||||||
for (const auto &Var : ConcreteVariables) {
|
for (const auto &Var : ConcreteVariables) {
|
||||||
DIE *VariableDie = Var->getDIE();
|
DIE *VariableDie = Var->getDIE();
|
||||||
// FIXME: There shouldn't be any variables without DIEs.
|
// FIXME: There shouldn't be any variables without DIEs.
|
||||||
assert(VariableDie);
|
if (!VariableDie)
|
||||||
|
continue;
|
||||||
// FIXME: Consider the time-space tradeoff of just storing the unit pointer
|
// FIXME: Consider the time-space tradeoff of just storing the unit pointer
|
||||||
// in the ConcreteVariables list, rather than looking it up again here.
|
// in the ConcreteVariables list, rather than looking it up again here.
|
||||||
// DIE::getUnit isn't simple - it walks parent pointers, etc.
|
// DIE::getUnit isn't simple - it walks parent pointers, etc.
|
||||||
|
@ -137,8 +137,6 @@ LexicalScope *LexicalScopes::findLexicalScope(DebugLoc DL) {
|
|||||||
/// getOrCreateLexicalScope - Find lexical scope for the given DebugLoc. If
|
/// getOrCreateLexicalScope - Find lexical scope for the given DebugLoc. If
|
||||||
/// not available then create new lexical scope.
|
/// not available then create new lexical scope.
|
||||||
LexicalScope *LexicalScopes::getOrCreateLexicalScope(DebugLoc DL) {
|
LexicalScope *LexicalScopes::getOrCreateLexicalScope(DebugLoc DL) {
|
||||||
if (DL.isUnknown())
|
|
||||||
return nullptr;
|
|
||||||
MDNode *Scope = nullptr;
|
MDNode *Scope = nullptr;
|
||||||
MDNode *InlinedAt = nullptr;
|
MDNode *InlinedAt = nullptr;
|
||||||
DL.getScopeAndInlinedAt(Scope, InlinedAt, MF->getFunction()->getContext());
|
DL.getScopeAndInlinedAt(Scope, InlinedAt, MF->getFunction()->getContext());
|
||||||
@ -174,12 +172,9 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
|
|||||||
std::make_tuple(Parent, DIDescriptor(Scope),
|
std::make_tuple(Parent, DIDescriptor(Scope),
|
||||||
nullptr, false)).first;
|
nullptr, false)).first;
|
||||||
|
|
||||||
if (!Parent) {
|
if (!Parent && DIDescriptor(Scope).isSubprogram() &&
|
||||||
assert(DIDescriptor(Scope).isSubprogram());
|
DISubprogram(Scope).describes(MF->getFunction()))
|
||||||
assert(DISubprogram(Scope).describes(MF->getFunction()));
|
|
||||||
assert(!CurrentFnLexicalScope);
|
|
||||||
CurrentFnLexicalScope = &I->second;
|
CurrentFnLexicalScope = &I->second;
|
||||||
}
|
|
||||||
|
|
||||||
return &I->second;
|
return &I->second;
|
||||||
}
|
}
|
||||||
|
@ -538,32 +538,6 @@ bool DISubprogram::Verify() const {
|
|||||||
if (isLValueReference() && isRValueReference())
|
if (isLValueReference() && isRValueReference())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (auto *F = getFunction()) {
|
|
||||||
LLVMContext &Ctxt = F->getContext();
|
|
||||||
for (auto &BB : *F) {
|
|
||||||
for (auto &I : BB) {
|
|
||||||
DebugLoc DL = I.getDebugLoc();
|
|
||||||
if (DL.isUnknown())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
MDNode *Scope = nullptr;
|
|
||||||
MDNode *IA = nullptr;
|
|
||||||
// walk the inlined-at scopes
|
|
||||||
while (DL.getScopeAndInlinedAt(Scope, IA, F->getContext()), IA)
|
|
||||||
DL = DebugLoc::getFromDILocation(IA);
|
|
||||||
DL.getScopeAndInlinedAt(Scope, IA, Ctxt);
|
|
||||||
assert(!IA);
|
|
||||||
while (!DIDescriptor(Scope).isSubprogram()) {
|
|
||||||
DILexicalBlockFile D(Scope);
|
|
||||||
Scope = D.isLexicalBlockFile()
|
|
||||||
? D.getScope()
|
|
||||||
: DebugLoc::getFromDILexicalBlock(Scope).getScope(Ctxt);
|
|
||||||
}
|
|
||||||
if (!DISubprogram(Scope).describes(F))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DbgNode->getNumOperands() == 20;
|
return DbgNode->getNumOperands() == 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user