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 | de7fad129daf87ed9a9d811e9025b4f85845e6ac (patch) | |
| tree | 663738f3bbffb5603d2748221315f8c38cf438be | |
| parent | a02084cff766d547751c64a43ba51962ba4886ca (diff) | |
| download | bcm5719-llvm-de7fad129daf87ed9a9d811e9025b4f85845e6ac.tar.gz bcm5719-llvm-de7fad129daf87ed9a9d811e9025b4f85845e6ac.zip | |
Refactoring: split the function CompilationGraph::Build() into two parts.
llvm-svn: 50760
| -rw-r--r-- | llvm/tools/llvmc2/CompilationGraph.cpp | 21 | ||||
| -rw-r--r-- | llvm/tools/llvmc2/CompilationGraph.h | 11 |
2 files changed, 22 insertions, 10 deletions
diff --git a/llvm/tools/llvmc2/CompilationGraph.cpp b/llvm/tools/llvmc2/CompilationGraph.cpp index f5cefbf0a90..4513d4a19ad 100644 --- a/llvm/tools/llvmc2/CompilationGraph.cpp +++ b/llvm/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/llvm/tools/llvmc2/CompilationGraph.h b/llvm/tools/llvmc2/CompilationGraph.h index 1158d8df1d8..57deef30a5c 100644 --- a/llvm/tools/llvmc2/CompilationGraph.h +++ b/llvm/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 |

