diff options
author | Chris Lattner <sabre@nondot.org> | 2003-11-13 18:48:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-11-13 18:48:11 +0000 |
commit | a8150c3f8dfaccf31b59119a9cdf8a0b2d0e445a (patch) | |
tree | 76252dbc8fe7bc08d01f62ed9b86dd3bd9addb56 /llvm/lib/Analysis/DataStructure | |
parent | 1608115bfc9f1ed4e56072c0da27bdf2b822420f (diff) | |
download | bcm5719-llvm-a8150c3f8dfaccf31b59119a9cdf8a0b2d0e445a.tar.gz bcm5719-llvm-a8150c3f8dfaccf31b59119a9cdf8a0b2d0e445a.zip |
Trying to get the dsgraph for an external function is bad for DSA's health
llvm-svn: 9979
Diffstat (limited to 'llvm/lib/Analysis/DataStructure')
-rw-r--r-- | llvm/lib/Analysis/DataStructure/CompleteBottomUp.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/llvm/lib/Analysis/DataStructure/CompleteBottomUp.cpp b/llvm/lib/Analysis/DataStructure/CompleteBottomUp.cpp index 326a794f7a0..8695537af5e 100644 --- a/llvm/lib/Analysis/DataStructure/CompleteBottomUp.cpp +++ b/llvm/lib/Analysis/DataStructure/CompleteBottomUp.cpp @@ -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!"); |