Trying to get the dsgraph for an external function is bad for DSA's health
authorChris Lattner <sabre@nondot.org>
Thu, 13 Nov 2003 18:48:11 +0000 (18:48 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 13 Nov 2003 18:48:11 +0000 (18:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9979 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/CompleteBottomUp.cpp

index 326a794f7a0d69d5a366b7281e9afa6e0073f077..8695537af5e29a322bd1f0a6211b8da413a200f2 100644 (file)
@@ -116,17 +116,18 @@ unsigned CompleteBUDataStructures::calculateSCCGraphs(DSGraph &FG,
 
     // Loop over all of the actually called functions...
     ActualCalleesTy::iterator I, E;
-    for (tie(I, E) = ActualCallees.equal_range(Call); I != E; ++I) {
-      DSGraph &Callee = getOrCreateGraph(*I->second);
-      unsigned M;
-      // Have we visited the destination function yet?
-      hash_map<DSGraph*, unsigned>::iterator It = ValMap.find(&Callee);
-      if (It == ValMap.end())  // No, visit it now.
-        M = calculateSCCGraphs(Callee, Stack, NextID, ValMap);
-      else                    // Yes, get it's number.
-        M = It->second;
-      if (M < Min) Min = M;
-    }
+    for (tie(I, E) = ActualCallees.equal_range(Call); I != E; ++I)
+      if (!I->second->isExternal()) {
+        DSGraph &Callee = getOrCreateGraph(*I->second);
+        unsigned M;
+        // Have we visited the destination function yet?
+        hash_map<DSGraph*, unsigned>::iterator It = ValMap.find(&Callee);
+        if (It == ValMap.end())  // No, visit it now.
+          M = calculateSCCGraphs(Callee, Stack, NextID, ValMap);
+        else                    // Yes, get it's number.
+          M = It->second;
+        if (M < Min) Min = M;
+      }
   }
 
   assert(ValMap[&FG] == MyID && "SCC construction assumption wrong!");