diff options
author | Mikhail Glushenkov <foldr@codedgers.com> | 2008-05-06 18:15:35 +0000 |
---|---|---|
committer | Mikhail Glushenkov <foldr@codedgers.com> | 2008-05-06 18:15:35 +0000 |
commit | a9d936936c83259ad6d3b004069c22ed2c908230 (patch) | |
tree | 6c4e15951834d6a5eb4f9d689f08699f24d3f481 /tools | |
parent | d622888d84206416e9fea43e843e5bedf26fa1b8 (diff) | |
download | external_llvm-a9d936936c83259ad6d3b004069c22ed2c908230.zip external_llvm-a9d936936c83259ad6d3b004069c22ed2c908230.tar.gz external_llvm-a9d936936c83259ad6d3b004069c22ed2c908230.tar.bz2 |
Refactoring: split the function CompilationGraph::Build() into two parts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50760 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/llvmc2/CompilationGraph.cpp | 21 | ||||
-rw-r--r-- | tools/llvmc2/CompilationGraph.h | 11 |
2 files changed, 22 insertions, 10 deletions
diff --git a/tools/llvmc2/CompilationGraph.cpp b/tools/llvmc2/CompilationGraph.cpp index f5cefbf..4513d4a 100644 --- a/tools/llvmc2/CompilationGraph.cpp +++ b/tools/llvmc2/CompilationGraph.cpp @@ -245,12 +245,11 @@ FindToolChain(const sys::Path& In, const std::string* forceLanguage, return &getNode(ChooseEdge(TV, InLangs)->ToolName()); } -// Build the targets. Command-line options are passed through -// temporary variables. -int CompilationGraph::Build (const sys::Path& TempDir) { - - InputLanguagesSet InLangs; - +// Helper function used by Build(). +// Traverses initial portions of the toolchains (up to the first Join node). +// This function is also responsible for handling the -x option. +void CompilationGraph::BuildInitial (InputLanguagesSet& InLangs, + const sys::Path& TempDir) { // This is related to -x option handling. cl::list<std::string>::const_iterator xIter = Languages.begin(), xBegin = xIter, xEnd = Languages.end(); @@ -303,6 +302,16 @@ int CompilationGraph::Build (const sys::Path& TempDir) { // Pass file through the chain starting at head. PassThroughGraph(In, N, InLangs, TempDir); } +} + +// Build the targets. Command-line options are passed through +// temporary variables. +int CompilationGraph::Build (const sys::Path& TempDir) { + + InputLanguagesSet InLangs; + + // Traverse initial parts of the toolchains and fill in InLangs. + BuildInitial(InLangs, TempDir); std::vector<const Node*> JTV; TopologicalSortFilterJoinNodes(JTV); diff --git a/tools/llvmc2/CompilationGraph.h b/tools/llvmc2/CompilationGraph.h index 1158d8d..57deef3 100644 --- a/tools/llvmc2/CompilationGraph.h +++ b/tools/llvmc2/CompilationGraph.h @@ -20,17 +20,16 @@ #include "llvm/ADT/GraphTraits.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/iterator" -//#include "llvm/ADT/SmallSet.h" +#include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringMap.h" #include "llvm/System/Path.h" -#include <set> #include <string> namespace llvmc { - typedef std::set<std::string> InputLanguagesSet; + typedef llvm::SmallSet<std::string, 5> InputLanguagesSet; // An edge of the compilation graph. class Edge : public llvm::RefCountedBaseVPTR<Edge> { @@ -162,7 +161,7 @@ namespace llvmc { // the given language name. Throws std::runtime_error. const tools_vector_type& getToolsVector(const std::string& LangName) const; - // Pass the input file through the toolchain. + // Pass the input file through the toolchain starting at StartNode. void PassThroughGraph (const llvm::sys::Path& In, const Node* StartNode, const InputLanguagesSet& InLangs, const llvm::sys::Path& TempDir) const; @@ -172,6 +171,10 @@ namespace llvmc { const std::string* forceLanguage, InputLanguagesSet& InLangs) const; + // Traverse the initial parts of the toolchains. + void BuildInitial(InputLanguagesSet& InLangs, + const llvm::sys::Path& TempDir); + // Sort the nodes in topological order. void TopologicalSort(std::vector<const Node*>& Out); // Call TopologicalSort and filter the resulting list to include |