[llvm-commits] [llvm] r50760 - in /llvm/trunk/tools/llvmc2: CompilationGraph.cpp CompilationGraph.h

Mikhail Glushenkov foldr at codedgers.com
Tue May 6 11:15:35 PDT 2008


Author: foldr
Date: Tue May  6 13:15:35 2008
New Revision: 50760

URL: http://llvm.org/viewvc/llvm-project?rev=50760&view=rev
Log:
Refactoring: split the function CompilationGraph::Build() into two parts.

Modified:
    llvm/trunk/tools/llvmc2/CompilationGraph.cpp
    llvm/trunk/tools/llvmc2/CompilationGraph.h

Modified: llvm/trunk/tools/llvmc2/CompilationGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/CompilationGraph.cpp?rev=50760&r1=50759&r2=50760&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc2/CompilationGraph.cpp (original)
+++ llvm/trunk/tools/llvmc2/CompilationGraph.cpp Tue May  6 13:15:35 2008
@@ -245,12 +245,11 @@
   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 @@
     // 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);

Modified: llvm/trunk/tools/llvmc2/CompilationGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvmc2/CompilationGraph.h?rev=50760&r1=50759&r2=50760&view=diff

==============================================================================
--- llvm/trunk/tools/llvmc2/CompilationGraph.h (original)
+++ llvm/trunk/tools/llvmc2/CompilationGraph.h Tue May  6 13:15:35 2008
@@ -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 @@
     // 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 @@
                               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





More information about the llvm-commits mailing list