[llvm-commits] [poolalloc] r159064 - in /poolalloc/trunk: include/dsa/DSGraph.h lib/DSA/BottomUpClosure.cpp lib/DSA/DSGraph.cpp lib/DSA/DataStructure.cpp lib/DSA/Printer.cpp
Will Dietz
wdietz2 at illinois.edu
Fri Jun 22 19:56:58 PDT 2012
Author: wdietz2
Date: Fri Jun 22 21:56:58 2012
New Revision: 159064
URL: http://llvm.org/viewvc/llvm-project?rev=159064&view=rev
Log:
Introduce new type(def) to represent a DSGraph's set of callsites.
No functionality change intended.
Modified:
poolalloc/trunk/include/dsa/DSGraph.h
poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
poolalloc/trunk/lib/DSA/DSGraph.cpp
poolalloc/trunk/lib/DSA/DataStructure.cpp
poolalloc/trunk/lib/DSA/Printer.cpp
Modified: poolalloc/trunk/include/dsa/DSGraph.h
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/include/dsa/DSGraph.h?rev=159064&r1=159063&r2=159064&view=diff
==============================================================================
--- poolalloc/trunk/include/dsa/DSGraph.h (original)
+++ poolalloc/trunk/include/dsa/DSGraph.h Fri Jun 22 21:56:58 2012
@@ -207,6 +207,7 @@
// InvNodeMapTy - This data type is used to represent the inverse of a node
// map.
typedef std::multimap<DSNodeHandle, const DSNode*> InvNodeMapTy;
+ typedef std::list<DSCallSite> FunctionListTy;
private:
DSGraph *GlobalsGraph; // Pointer to the common graph of global objects
@@ -238,13 +239,13 @@
// scalar being invoked, and the rest are pointer arguments to the function.
// This vector is built by the Local graph and is never modified after that.
//
- std::list<DSCallSite> FunctionCalls;
+ FunctionListTy FunctionCalls;
// AuxFunctionCalls - This vector contains call sites that have been processed
// by some mechanism. In pratice, the BU Analysis uses this vector to hold
// the _unresolved_ call sites, because it cannot modify FunctionCalls.
//
- std::list<DSCallSite> AuxFunctionCalls;
+ FunctionListTy AuxFunctionCalls;
/// TD - This is the target data object for the machine this graph is
/// constructed for.
@@ -331,19 +332,19 @@
/// getFunctionCalls - Return the list of call sites in the original local
/// graph...
///
- const std::list<DSCallSite> &getFunctionCalls() const { return FunctionCalls;}
- std::list<DSCallSite> &getFunctionCalls() { return FunctionCalls;}
+ const FunctionListTy &getFunctionCalls() const { return FunctionCalls;}
+ FunctionListTy &getFunctionCalls() { return FunctionCalls;}
/// getAuxFunctionCalls - Get the call sites as modified by whatever passes
/// have been run.
///
- std::list<DSCallSite> &getAuxFunctionCalls() { return AuxFunctionCalls; }
- const std::list<DSCallSite> &getAuxFunctionCalls() const {
+ FunctionListTy &getAuxFunctionCalls() { return AuxFunctionCalls; }
+ const FunctionListTy &getAuxFunctionCalls() const {
return AuxFunctionCalls;
}
// addAuxFunctionCall - Add a call site to the AuxFunctionCallList
- void addAuxFunctionCall(DSCallSite D) { AuxFunctionCalls.push_front(D); }
+ void addAuxFunctionCall(DSCallSite D) { AuxFunctionCalls.push_back(D); }
void buildCallGraph(DSCallGraph& DCG, std::vector<const Function*> &GlobalFunctionList, bool filter) const;
void buildCompleteCallGraph(DSCallGraph& DCG, std::vector<const Function*> &GlobalFunctionList, bool filter) const;
@@ -353,16 +354,16 @@
void removeFunctionCalls(Function& F);
// Function Call iteration
- typedef std::list<DSCallSite>::const_iterator fc_iterator;
+ typedef FunctionListTy::const_iterator fc_iterator;
fc_iterator fc_begin() const { return FunctionCalls.begin(); }
fc_iterator fc_end() const { return FunctionCalls.end(); }
// Aux Function Call iteration
- typedef std::list<DSCallSite>::iterator afc_iterator;
+ typedef FunctionListTy::iterator afc_iterator;
afc_iterator afc_begin() { return AuxFunctionCalls.begin(); }
afc_iterator afc_end() { return AuxFunctionCalls.end(); }
- typedef std::list<DSCallSite>::const_iterator afc_const_iterator;
+ typedef FunctionListTy::const_iterator afc_const_iterator;
afc_const_iterator afc_begin() const { return AuxFunctionCalls.begin(); }
afc_const_iterator afc_end() const { return AuxFunctionCalls.end(); }
Modified: poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/BottomUpClosure.cpp?rev=159064&r1=159063&r2=159064&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Fri Jun 22 21:56:58 2012
@@ -610,8 +610,8 @@
// 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;
- std::list<DSCallSite> &AuxCallsList = Graph->getAuxFunctionCalls();
+ DSGraph::FunctionListTy TempFCs;
+ DSGraph::FunctionListTy &AuxCallsList = Graph->getAuxFunctionCalls();
TempFCs.swap(AuxCallsList);
while (!TempFCs.empty()) {
Modified: poolalloc/trunk/lib/DSA/DSGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DSGraph.cpp?rev=159064&r1=159063&r2=159064&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DSGraph.cpp (original)
+++ poolalloc/trunk/lib/DSA/DSGraph.cpp Fri Jun 22 21:56:58 2012
@@ -133,8 +133,8 @@
void DSGraph::dump() const { print(errs()); }
void DSGraph::removeFunctionCalls(Function& F) {
- std::list<DSCallSite>::iterator Erase = FunctionCalls.end();
- for (std::list<DSCallSite>::iterator I = FunctionCalls.begin();
+ FunctionListTy::iterator Erase = FunctionCalls.end();
+ for (FunctionListTy::iterator I = FunctionCalls.begin();
I != Erase; ) {
if (I->isDirectCall() && I->getCalleeFunc() == &F)
std::swap(*I, *--Erase);
@@ -144,7 +144,7 @@
FunctionCalls.erase(Erase, FunctionCalls.end());
Erase = AuxFunctionCalls.end();
- for (std::list<DSCallSite>::iterator I = AuxFunctionCalls.begin();
+ for (FunctionListTy::iterator I = AuxFunctionCalls.begin();
I != Erase; ) {
if (I->isDirectCall() && I->getCalleeFunc() == &F)
std::swap(*I, *--Erase);
@@ -648,11 +648,11 @@
// Mark stuff passed into functions calls as being incomplete.
if (!shouldUseAuxCalls())
- for (std::list<DSCallSite>::iterator I = FunctionCalls.begin(),
+ for (FunctionListTy::iterator I = FunctionCalls.begin(),
E = FunctionCalls.end(); I != E; ++I)
markIncomplete(*I);
else
- for (std::list<DSCallSite>::iterator I = AuxFunctionCalls.begin(),
+ for (FunctionListTy::iterator I = AuxFunctionCalls.begin(),
E = AuxFunctionCalls.end(); I != E; ++I)
markIncomplete(*I);
@@ -852,7 +852,7 @@
// clients can query call graph, means we need callee information for all the
// call sites. And hence, we should not remove them without ever inlining them
-static void removeIdenticalCalls(std::list<DSCallSite> &Calls) {
+static void removeIdenticalCalls(DSGraph::FunctionListTy &Calls) {
// Remove trivially identical function calls
Calls.sort(); // Sort by callee as primary key!
@@ -891,7 +891,7 @@
// resolvable, just merge the call sites.
if (!LastCalleeNode.isNull() && LastCalleeNode.getNode() == Callee) {
// check that arguments also match
- std::list<DSCallSite>::iterator PrevIt = OldIt;
+ DSGraph::FunctionListTy::iterator PrevIt = OldIt;
--PrevIt;
if(CS == *PrevIt) {
// LastCalleeContainsExternalFunction = Callee->isExternFuncNode();
@@ -983,10 +983,10 @@
Calls.sort();
// Now that we are in sorted order, eliminate duplicates.
- std::list<DSCallSite>::iterator CI = Calls.begin(), CE = Calls.end();
+ DSGraph::FunctionListTy::iterator CI = Calls.begin(), CE = Calls.end();
if (CI != CE)
while (1) {
- std::list<DSCallSite>::iterator OldIt = CI++;
+ DSGraph::FunctionListTy::iterator OldIt = CI++;
if (CI == CE) break;
// If this call site is now the same as the previous one, we can delete it
@@ -1240,7 +1240,7 @@
} while (Iterate);
// Move dead aux function calls to the end of the list
- for (std::list<DSCallSite>::iterator CI = AuxFunctionCalls.begin(),
+ for (FunctionListTy::iterator CI = AuxFunctionCalls.begin(),
E = AuxFunctionCalls.end(); CI != E; )
if (AuxFCallsAlive.count(&*CI))
++CI;
@@ -1662,8 +1662,8 @@
//
// Get the list of unresolved call sites.
//
- const std::list<DSCallSite>& Calls = getFunctionCalls();
- for (std::list<DSCallSite>::const_iterator ii = Calls.begin(),
+ const FunctionListTy& Calls = getFunctionCalls();
+ for (FunctionListTy::const_iterator ii = Calls.begin(),
ee = Calls.end();
ii != ee; ++ii) {
//
@@ -1718,11 +1718,11 @@
//
// Get the list of unresolved call sites.
//
- const std::list<DSCallSite>& Calls = getAuxFunctionCalls();
- for (std::list<DSCallSite>::const_iterator ii = Calls.begin(),
+ const FunctionListTy& Calls = getAuxFunctionCalls();
+ for (FunctionListTy::const_iterator ii = Calls.begin(),
ee = Calls.end();
ii != ee; ++ii) {
-
+
if (ii->isDirectCall()) continue;
CallSite CS = ii->getCallSite();
if (DCG.callee_size(CS) != 0) continue;
Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=159064&r1=159063&r2=159064&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Fri Jun 22 21:56:58 2012
@@ -1256,12 +1256,12 @@
DSGraph* BaseGraph = GraphSource->getDSGraph(*F);
if (Clone) {
G = new DSGraph(BaseGraph, GlobalECs, *TypeSS);
- if (resetAuxCalls)
+ if (resetAuxCalls)
G->getAuxFunctionCalls() = G->getFunctionCalls();
} else {
G = new DSGraph(GlobalECs, GraphSource->getTargetData(), *TypeSS);
G->spliceFrom(BaseGraph);
- if (resetAuxCalls)
+ if (resetAuxCalls)
G->getAuxFunctionCalls() = G->getFunctionCalls();
}
G->setUseAuxCalls();
Modified: poolalloc/trunk/lib/DSA/Printer.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/Printer.cpp?rev=159064&r1=159063&r2=159064&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/Printer.cpp (original)
+++ poolalloc/trunk/lib/DSA/Printer.cpp Fri Jun 22 21:56:58 2012
@@ -248,10 +248,10 @@
}
// Output all of the call nodes...
- const std::list<DSCallSite> &FCs =
+ const DSGraph::FunctionListTy &FCs =
G->shouldUseAuxCalls() ? G->getAuxFunctionCalls()
: G->getFunctionCalls();
- for (std::list<DSCallSite>::const_iterator I = FCs.begin(), E = FCs.end();
+ for (DSGraph::FunctionListTy::const_iterator I = FCs.begin(), E = FCs.end();
I != E; ++I) {
const DSCallSite &Call = *I;
std::vector<std::string> EdgeSourceCaptions(Call.getNumPtrArgs()+2);
More information about the llvm-commits
mailing list