llvm-config-2: Fix thinko in maintenance of visited component set.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 10 Nov 2011 14:53:23 +0000 (14:53 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 10 Nov 2011 14:53:23 +0000 (14:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144291 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-config-2/llvm-config.cpp

index ec0daad03562f98f22559c56f6170f3d00c14081..30ace56f4cad253d0ee36433e04bc78721661d25 100644 (file)
@@ -54,18 +54,19 @@ using namespace llvm;
 /// \param RequiredLibs [out] - The ordered list of required libraries.
 static void VisitComponent(StringRef Name,
                            const StringMap<AvailableComponent*> &ComponentMap,
-                           std::set<StringRef> &VisitedComponents,
+                           std::set<AvailableComponent*> &VisitedComponents,
                            std::vector<StringRef> &RequiredLibs) {
+  // Lookup the component.
+  AvailableComponent *AC = ComponentMap.lookup(Name);
+  assert(AC && "Invalid component name!");
+
   // Add to the visited table.
-  if (!VisitedComponents.insert(Name).second) {
+  if (!VisitedComponents.insert(AC).second) {
     // We are done if the component has already been visited.
     return;
   }
 
   // Otherwise, visit all the dependencies.
-  AvailableComponent *AC = ComponentMap.lookup(Name);
-  assert(AC && "Invalid component name!");
-
   for (unsigned i = 0; AC->RequiredLibraries[i]; ++i) {
     VisitComponent(AC->RequiredLibraries[i], ComponentMap, VisitedComponents,
                    RequiredLibs);
@@ -85,8 +86,7 @@ static void VisitComponent(StringRef Name,
 /// are required to link the given components.
 void ComputeLibsForComponents(const std::vector<StringRef> &Components,
                               std::vector<StringRef> &RequiredLibs) {
-  std::set<StringRef> VisitedComponents;
-  std::vector<StringRef> ToVisit = Components;
+  std::set<AvailableComponent*> VisitedComponents;
 
   // Build a map of component names to information.
   StringMap<AvailableComponent*> ComponentMap;