Revert "Reapply "DebugInfo: Ensure that all debug location scope chains from instruct...
authorEric Christopher <echristo@gmail.com>
Fri, 18 Jul 2014 23:57:20 +0000 (23:57 +0000)
committerEric Christopher <echristo@gmail.com>
Fri, 18 Jul 2014 23:57:20 +0000 (23:57 +0000)
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

lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/LexicalScopes.cpp
lib/IR/DebugInfo.cpp

index 8064209ba37c368472bcba445666f354a9e5b068..99e7a272d7fdfa952a623f30cdd997c75d54b258 100644 (file)
@@ -789,7 +789,8 @@ void DwarfDebug::finishVariableDefinitions() {
   for (const auto &Var : ConcreteVariables) {
     DIE *VariableDie = Var->getDIE();
     // FIXME: There shouldn't be any variables without DIEs.
   for (const auto &Var : ConcreteVariables) {
     DIE *VariableDie = Var->getDIE();
     // 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
     // in the ConcreteVariables list, rather than looking it up again here.
     // DIE::getUnit isn't simple - it walks parent pointers, etc.
     // FIXME: Consider the time-space tradeoff of just storing the unit pointer
     // in the ConcreteVariables list, rather than looking it up again here.
     // DIE::getUnit isn't simple - it walks parent pointers, etc.
index f67c717d4e412915b0a9ef0ba443c33a285db226..d12c234bf3b20343eea3d8b7dc740dc476eb7485 100644 (file)
@@ -137,8 +137,6 @@ 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) {
 /// 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());
   MDNode *Scope = nullptr;
   MDNode *InlinedAt = nullptr;
   DL.getScopeAndInlinedAt(Scope, InlinedAt, MF->getFunction()->getContext());
@@ -174,12 +172,9 @@ LexicalScope *LexicalScopes::getOrCreateRegularScope(MDNode *Scope) {
                               std::make_tuple(Parent, DIDescriptor(Scope),
                                               nullptr, false)).first;
 
                               std::make_tuple(Parent, DIDescriptor(Scope),
                                               nullptr, false)).first;
 
-  if (!Parent) {
-    assert(DIDescriptor(Scope).isSubprogram());
-    assert(DISubprogram(Scope).describes(MF->getFunction()));
-    assert(!CurrentFnLexicalScope);
+  if (!Parent && DIDescriptor(Scope).isSubprogram() &&
+      DISubprogram(Scope).describes(MF->getFunction()))
     CurrentFnLexicalScope = &I->second;
     CurrentFnLexicalScope = &I->second;
-  }
 
   return &I->second;
 }
 
   return &I->second;
 }
index 391dec217bd08bf6dc2d161f4b906db8b2ef758b..5e39b242dbbc84cd9a7cb64d65dfbd42483c45d5 100644 (file)
@@ -538,32 +538,6 @@ bool DISubprogram::Verify() const {
   if (isLValueReference() && isRValueReference())
     return false;
 
   if (isLValueReference() && isRValueReference())
     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;
 }