aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/DataStructure/DataStructureStats.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-02-05 21:59:58 +0000
committerChris Lattner <sabre@nondot.org>2003-02-05 21:59:58 +0000
commit923fc05b3a95efad270b283f97b2670152a41efb (patch)
treef57c34bd5de4a4e4b59c46847c9da54894f2bf9e /lib/Analysis/DataStructure/DataStructureStats.cpp
parentbbe5ac1458f3719fd51785f086e9166ccbb0c464 (diff)
Implement optimization for direct function call case. This dramatically
reduces the number of function nodes created and speeds up analysis by about 10% overall. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5495 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/DataStructure/DataStructureStats.cpp')
-rw-r--r--lib/Analysis/DataStructure/DataStructureStats.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/Analysis/DataStructure/DataStructureStats.cpp b/lib/Analysis/DataStructure/DataStructureStats.cpp
index 36d060edd5..c2ca7ea37c 100644
--- a/lib/Analysis/DataStructure/DataStructureStats.cpp
+++ b/lib/Analysis/DataStructure/DataStructureStats.cpp
@@ -48,9 +48,7 @@ static bool isIndirectCallee(Value *V) {
}
-void DSGraphStats::countCallees(const Function& F,
- const DSGraph& tdGraph)
-{
+void DSGraphStats::countCallees(const Function& F, const DSGraph& tdGraph) {
unsigned numIndirectCalls = 0, totalNumCallees = 0;
const std::vector<DSCallSite>& callSites = tdGraph.getFunctionCalls();
@@ -58,12 +56,11 @@ void DSGraphStats::countCallees(const Function& F,
if (isIndirectCallee(callSites[i].getCallInst().getCalledValue()))
{ // This is an indirect function call
std::vector<GlobalValue*> Callees =
- callSites[i].getCallee().getNode()->getGlobals();
- if (Callees.size() > 0)
- {
- totalNumCallees += Callees.size();
- ++numIndirectCalls;
- }
+ callSites[i].getCalleeNode()->getGlobals();
+ if (Callees.size() > 0) {
+ totalNumCallees += Callees.size();
+ ++numIndirectCalls;
+ }
#ifndef NDEBUG
else
std::cerr << "WARNING: No callee in Function " << F.getName()
@@ -81,8 +78,7 @@ void DSGraphStats::countCallees(const Function& F,
}
-bool DSGraphStats::runOnFunction(Function& F)
-{
+bool DSGraphStats::runOnFunction(Function& F) {
const DSGraph& tdGraph = getAnalysis<TDDataStructures>().getDSGraph(F);
countCallees(F, tdGraph);
return true;