From ca3156ac77e443247a87745fd3d84b94f6d46d23 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 6 Aug 2015 22:14:35 +0000 Subject: [PATCH] [modules] Remove unused ModuleManager::visitDepthFirst function. llvm-svn: 244289 --- clang/include/clang/Serialization/ModuleManager.h | 30 ----------- clang/lib/Serialization/ModuleManager.cpp | 65 ----------------------- 2 files changed, 95 deletions(-) diff --git a/clang/include/clang/Serialization/ModuleManager.h b/clang/include/clang/Serialization/ModuleManager.h index b191a1d..8b879ab 100644 --- a/clang/include/clang/Serialization/ModuleManager.h +++ b/clang/include/clang/Serialization/ModuleManager.h @@ -277,36 +277,6 @@ public: void visit(llvm::function_ref Visitor, llvm::SmallPtrSetImpl *ModuleFilesHit = nullptr); - /// \brief Control DFS behavior during preorder visitation. - enum DFSPreorderControl { - Continue, /// Continue visiting all nodes. - Abort, /// Stop the visitation immediately. - SkipImports, /// Do not visit imports of the current node. - }; - - /// \brief Visit each of the modules with a depth-first traversal. - /// - /// This routine visits each of the modules known to the module - /// manager using a depth-first search, starting with the first - /// loaded module. The traversal invokes one callback before - /// traversing the imports (preorder traversal) and one after - /// traversing the imports (postorder traversal). - /// - /// \param PreorderVisitor A visitor function that will be invoked with each - /// module before visiting its imports. The visitor can control how to - /// continue the visitation through its return value. - /// - /// \param PostorderVisitor A visitor function taht will be invoked with each - /// module after visiting its imports. The visitor may return true at any time - /// to abort the depth-first visitation. - /// - /// \param UserData User data ssociated with the visitor object, - /// which will be passed along to the user. - void visitDepthFirst(DFSPreorderControl (*PreorderVisitor)(ModuleFile &M, - void *UserData), - bool (*PostorderVisitor)(ModuleFile &M, void *UserData), - void *UserData); - /// \brief Attempt to resolve the given module file name to a file entry. /// /// \param FileName The name of the module file. diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index 406c5c0..895743f 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -417,71 +417,6 @@ void ModuleManager::visit(llvm::function_ref Visitor, returnVisitState(State); } -static void markVisitedDepthFirst(ModuleFile &M, - SmallVectorImpl &Visited) { - for (llvm::SetVector::iterator IM = M.Imports.begin(), - IMEnd = M.Imports.end(); - IM != IMEnd; ++IM) { - if (Visited[(*IM)->Index]) - continue; - Visited[(*IM)->Index] = true; - if (!M.DirectlyImported) - markVisitedDepthFirst(**IM, Visited); - } -} - -/// \brief Perform a depth-first visit of the current module. -static bool visitDepthFirst( - ModuleFile &M, - ModuleManager::DFSPreorderControl (*PreorderVisitor)(ModuleFile &M, - void *UserData), - bool (*PostorderVisitor)(ModuleFile &M, void *UserData), void *UserData, - SmallVectorImpl &Visited) { - if (PreorderVisitor) { - switch (PreorderVisitor(M, UserData)) { - case ModuleManager::Abort: - return true; - case ModuleManager::SkipImports: - markVisitedDepthFirst(M, Visited); - return false; - case ModuleManager::Continue: - break; - } - } - - // Visit children - for (llvm::SetVector::iterator IM = M.Imports.begin(), - IMEnd = M.Imports.end(); - IM != IMEnd; ++IM) { - if (Visited[(*IM)->Index]) - continue; - Visited[(*IM)->Index] = true; - - if (visitDepthFirst(**IM, PreorderVisitor, PostorderVisitor, UserData, Visited)) - return true; - } - - if (PostorderVisitor) - return PostorderVisitor(M, UserData); - - return false; -} - -void ModuleManager::visitDepthFirst( - ModuleManager::DFSPreorderControl (*PreorderVisitor)(ModuleFile &M, - void *UserData), - bool (*PostorderVisitor)(ModuleFile &M, void *UserData), void *UserData) { - SmallVector Visited(size(), false); - for (unsigned I = 0, N = Roots.size(); I != N; ++I) { - if (Visited[Roots[I]->Index]) - continue; - Visited[Roots[I]->Index] = true; - - if (::visitDepthFirst(*Roots[I], PreorderVisitor, PostorderVisitor, UserData, Visited)) - return; - } -} - bool ModuleManager::lookupModuleFile(StringRef FileName, off_t ExpectedSize, time_t ExpectedModTime, -- 2.7.4