diff options
author | Chris Lattner <sabre@nondot.org> | 2005-03-22 00:12:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-03-22 00:12:00 +0000 |
commit | 03b7f993385a20c869b94c544dccf820e13d3fe6 (patch) | |
tree | 1f0072c56df4b7eed66a22ed3f2c46c02151949e /llvm/lib/Analysis/DataStructure | |
parent | 410da35a1ff33974bba973d8f250b31e9787df16 (diff) | |
download | bcm5719-llvm-03b7f993385a20c869b94c544dccf820e13d3fe6.tar.gz bcm5719-llvm-03b7f993385a20c869b94c544dccf820e13d3fe6.zip |
add some timers, don't clone aux nodes
llvm-svn: 20752
Diffstat (limited to 'llvm/lib/Analysis/DataStructure')
-rw-r--r-- | llvm/lib/Analysis/DataStructure/TopDownClosure.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp index d43f9fecbfc..f1aea7982c0 100644 --- a/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp +++ b/llvm/lib/Analysis/DataStructure/TopDownClosure.cpp @@ -19,9 +19,17 @@ #include "llvm/DerivedTypes.h" #include "llvm/Analysis/DataStructure/DSGraph.h" #include "llvm/Support/Debug.h" +#include "llvm/Support/Timer.h" #include "llvm/ADT/Statistic.h" using namespace llvm; +#if 0 +#define TIME_REGION(VARNAME, DESC) \ + NamedRegionTimer VARNAME(DESC) +#else +#define TIME_REGION(VARNAME, DESC) +#endif + namespace { RegisterAnalysis<TDDataStructures> // Register the pass Y("tddatastructure", "Top-down Data Structure Analysis"); @@ -90,6 +98,20 @@ bool TDDataStructures::runOnModule(Module &M) { const BUDataStructures::ActualCalleesTy &ActualCallees = getAnalysis<BUDataStructures>().getActualCallees(); +#if 0 +{TIME_REGION(XXX, "td:Copy graphs"); + + // Visit each of the graphs in reverse post-order now! + for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) + if (!I->isExternal()) + getOrCreateDSGraph(*I); +} +//return false; +#endif + + +{TIME_REGION(XXX, "td:Compute postorder"); + // Calculate top-down from main... if (Function *F = M.getMainFunction()) ComputePostOrder(*F, VisitedGraph, PostOrder, ActualCallees); @@ -99,12 +121,16 @@ bool TDDataStructures::runOnModule(Module &M) { ComputePostOrder(*I, VisitedGraph, PostOrder, ActualCallees); VisitedGraph.clear(); // Release memory! +} + +{TIME_REGION(XXX, "td:Inline stuff"); // Visit each of the graphs in reverse post-order now! while (!PostOrder.empty()) { InlineCallersIntoGraph(*PostOrder.back()); PostOrder.pop_back(); } +} // Free the IndCallMap. while (!IndCallMap.empty()) { @@ -123,8 +149,9 @@ bool TDDataStructures::runOnModule(Module &M) { DSGraph &TDDataStructures::getOrCreateDSGraph(Function &F) { DSGraph *&G = DSInfo[&F]; if (G == 0) { // Not created yet? Clone BU graph... - G = new DSGraph(getAnalysis<BUDataStructures>().getDSGraph(F), GlobalECs); - G->getAuxFunctionCalls().clear(); + G = new DSGraph(getAnalysis<BUDataStructures>().getDSGraph(F), GlobalECs, + DSGraph::DontCloneAuxCallNodes); + assert(G->getAuxFunctionCalls().empty() && "Cloned aux calls?"); G->setPrintAuxCalls(); G->setGlobalsGraph(GlobalsGraph); } |