[llvm-commits] [poolalloc] r57985 - /poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
Andrew Lenharth
alenhar2 at cs.uiuc.edu
Wed Oct 22 09:38:54 PDT 2008
Author: alenhar2
Date: Wed Oct 22 11:38:54 2008
New Revision: 57985
URL: http://llvm.org/viewvc/llvm-project?rev=57985&view=rev
Log:
fix infinate loop
Modified:
poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
Modified: poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/BottomUpClosure.cpp?rev=57985&r1=57984&r2=57985&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Wed Oct 22 11:38:54 2008
@@ -574,7 +574,12 @@
}
void BUDataStructures::inlineUnresolved(DSGraph* Graph) {
- for (DSGraph::afc_iterator aii = Graph->afc_begin(), aee = Graph->afc_end();
+
+ // Move our call site list into TempFCs so that inline call sites go into the
+ // new call site list and doesn't invalidate our iterators!
+ std::list<DSCallSite> TempFCs = Graph->getAuxFunctionCalls();
+
+ for (DSGraph::afc_iterator aii = TempFCs.begin(), aee = TempFCs.end();
aii != aee; ++aii) {
std::vector<const Function*> CalledFuncs;
DSCallSite CS = *aii;
@@ -673,11 +678,12 @@
GI = IndCallGraph.first;
// Merge the unified graph into this graph now.
- DOUT << " Inlining multi callee graph "
- << "[" << GI->getGraphSize() << "+"
- << GI->getAuxFunctionCalls().size() << "] into '"
- << Graph->getFunctionNames() << "' [" << Graph->getGraphSize() <<"+"
- << Graph->getAuxFunctionCalls().size() << "]\n";
+ DEBUG(
+ DOUT << " Inlining multi callee graph "
+ << "[" << GI->getGraphSize() << "+"
+ << GI->getAuxFunctionCalls().size() << "] into '"
+ << Graph->getFunctionNames() << "' [" << Graph->getGraphSize() <<"+"
+ << Graph->getAuxFunctionCalls().size() << "]\n"; );
Graph->mergeInGraph(CS, IndCallGraph.second, *GI,
DSGraph::StripAllocaBit |
More information about the llvm-commits
mailing list