From fbdeb8cbc147f8f49fbd4bf23fae01bd142f0f5d Mon Sep 17 00:00:00 2001 From: Vladislav Dzhidzhoev Date: Thu, 15 Jun 2023 18:04:32 +0200 Subject: Revert "[DebugMetadata][DwarfDebug] Fix DWARF emisson of function-local imported entities (3/7)" This reverts commit d80fdc6fc1a6e717af1bcd7a7313e65de433ba85. split-dwarf-local-impor3.ll fails because of an issue with Dwo sections emission on Windows platform. --- llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 84 ------------------------------ 1 file changed, 84 deletions(-) (limited to 'llvm/lib/Bitcode/Reader/MetadataLoader.cpp') diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp index f13c26e..4b5cfed 100644 --- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp @@ -15,7 +15,6 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/STLFunctionalExtras.h" -#include "llvm/ADT/SetVector.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" @@ -54,7 +53,6 @@ #include #include #include -#include #include #include #include @@ -465,9 +463,6 @@ class MetadataLoader::MetadataLoaderImpl { bool NeedUpgradeToDIGlobalVariableExpression = false; bool NeedDeclareExpressionUpgrade = false; - /// Map DILocalScope to the enclosing DISubprogram, if any. - DenseMap ParentSubprogram; - /// True if metadata is being parsed for a module being ThinLTO imported. bool IsImporting = false; @@ -526,84 +521,6 @@ class MetadataLoader::MetadataLoaderImpl { } } - DISubprogram *findEnclosingSubprogram(DILocalScope *S) { - if (!S) - return nullptr; - if (auto *SP = ParentSubprogram[S]) { - return SP; - } - - DILocalScope *InitialScope = S; - DenseSet Visited; - while (S && !isa(S)) { - S = dyn_cast_or_null(S->getScope()); - if (Visited.contains(S)) - break; - Visited.insert(S); - } - ParentSubprogram[InitialScope] = llvm::dyn_cast_or_null(S); - - return ParentSubprogram[InitialScope]; - } - - /// Move local imports from DICompileUnit's 'imports' field to - /// DISubprogram's retainedNodes. - void upgradeCULocals() { - if (NamedMDNode *CUNodes = TheModule.getNamedMetadata("llvm.dbg.cu")) { - for (unsigned I = 0, E = CUNodes->getNumOperands(); I != E; ++I) { - auto *CU = dyn_cast(CUNodes->getOperand(I)); - if (!CU) - continue; - - if (auto *RawImported = CU->getRawImportedEntities()) { - // Collect a set of imported entities to be moved. - SmallPtrSet EntitiesToRemove; - for (Metadata *Op : CU->getImportedEntities()->operands()) { - auto *IE = cast(Op); - if (auto *S = dyn_cast_or_null(IE->getScope())) { - EntitiesToRemove.insert(IE); - } - } - - if (!EntitiesToRemove.empty()) { - // Make a new list of CU's 'imports'. - SmallVector NewImports; - for (Metadata *Op : CU->getImportedEntities()->operands()) { - if (!EntitiesToRemove.contains(cast(Op))) { - NewImports.push_back(Op); - } - } - - // Find DISubprogram corresponding to each entity. - std::map> SPToEntities; - for (auto *I : EntitiesToRemove) { - auto *Entity = cast(I); - if (auto *SP = findEnclosingSubprogram( - cast(Entity->getScope()))) { - SPToEntities[SP].push_back(Entity); - } - } - - // Update DISubprograms' retainedNodes. - for (auto I = SPToEntities.begin(); I != SPToEntities.end(); ++I) { - auto *SP = I->first; - auto RetainedNodes = SP->getRetainedNodes(); - SmallVector MDs(RetainedNodes.begin(), - RetainedNodes.end()); - MDs.append(I->second); - SP->replaceRetainedNodes(MDNode::get(Context, MDs)); - } - - // Remove entities with local scope from CU. - CU->replaceImportedEntities(MDTuple::get(Context, NewImports)); - } - } - } - } - - ParentSubprogram.clear(); - } - /// Remove a leading DW_OP_deref from DIExpressions in a dbg.declare that /// describes a function argument. void upgradeDeclareExpressions(Function &F) { @@ -708,7 +625,6 @@ class MetadataLoader::MetadataLoaderImpl { void upgradeDebugInfo() { upgradeCUSubprograms(); upgradeCUVariables(); - upgradeCULocals(); } void callMDTypeCallback(Metadata **Val, unsigned TypeID); -- cgit v1.1