[llvm-commits] [llvm] r79940 - in /llvm/trunk: include/llvm/Analysis/ProfileInfo.h lib/Analysis/ProfileInfo.cpp
Andreas Neustifter
astifter at gmx.at
Mon Aug 24 14:37:49 PDT 2009
Author: astifter
Date: Mon Aug 24 16:37:48 2009
New Revision: 79940
URL: http://llvm.org/viewvc/llvm-project?rev=79940&view=rev
Log:
This patch cleans up the ProfileInfo by
*) introducing new data type and export function of edge info for whole function (preparation for next patch).
*) renaming variables to make clear distinction between data and containers that contain this data.
*) updated comments and whitespaces.
*) made ProfileInfo::MissingValue a double (as it should be...).
(Discussed at http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090817/084955.html.)
Modified:
llvm/trunk/include/llvm/Analysis/ProfileInfo.h
llvm/trunk/lib/Analysis/ProfileInfo.cpp
Modified: llvm/trunk/include/llvm/Analysis/ProfileInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ProfileInfo.h?rev=79940&r1=79939&r2=79940&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/ProfileInfo.h (original)
+++ llvm/trunk/include/llvm/Analysis/ProfileInfo.h Mon Aug 24 16:37:48 2009
@@ -36,20 +36,21 @@
public:
// Types for handling profiling information.
typedef std::pair<const BasicBlock*, const BasicBlock*> Edge;
- typedef std::map<Edge, double> EdgeCounts;
+ typedef std::pair<Edge, double> EdgeWeight;
+ typedef std::map<Edge, double> EdgeWeights;
typedef std::map<const BasicBlock*, double> BlockCounts;
protected:
- // EdgeCounts - Count the number of times a transition between two blocks is
- // executed. As a special case, we also hold an edge from the null
- // BasicBlock to the entry block to indicate how many times the function was
- // entered.
- std::map<const Function*, EdgeCounts> EdgeInformation;
+ // EdgeInformation - Count the number of times a transition between two
+ // blocks is executed. As a special case, we also hold an edge from the
+ // null BasicBlock to the entry block to indicate how many times the
+ // function was entered.
+ std::map<const Function*, EdgeWeights> EdgeInformation;
- // BlockCounts - Count the number of times a block is executed.
+ // BlockInformation - Count the number of times a block is executed.
std::map<const Function*, BlockCounts> BlockInformation;
- // FunctionCounts - Count the number of times a function is executed.
+ // FunctionInformation - Count the number of times a function is executed.
std::map<const Function*, double> FunctionInformation;
public:
static char ID; // Class identification, replacement for typeinfo
@@ -57,7 +58,7 @@
// MissingValue - The value that is returned for execution counts in case
// no value is available.
- static const int MissingValue = -1;
+ static const double MissingValue;
// getFunction() - Returns the Function for an Edge, checking for validity.
static const Function* getFunction(Edge e) {
@@ -66,7 +67,7 @@
}
// getEdge() - Creates an Edge from two BasicBlocks.
- static Edge getEdge(const BasicBlock* Src, const BasicBlock* Dest) {
+ static Edge getEdge(const BasicBlock *Src, const BasicBlock *Dest) {
return std::make_pair(Src, Dest);
}
@@ -78,16 +79,20 @@
double getExecutionCount(const BasicBlock *BB);
double getEdgeWeight(Edge e) const {
- std::map<const Function*, EdgeCounts>::const_iterator J =
+ std::map<const Function*, EdgeWeights>::const_iterator J =
EdgeInformation.find(getFunction(e));
if (J == EdgeInformation.end()) return MissingValue;
- EdgeCounts::const_iterator I = J->second.find(e);
+ EdgeWeights::const_iterator I = J->second.find(e);
if (I == J->second.end()) return MissingValue;
return I->second;
}
+ EdgeWeights &getEdgeWeights (const Function *F) {
+ return EdgeInformation[F];
+ }
+
//===------------------------------------------------------------------===//
/// Analysis Update Methods
///
Modified: llvm/trunk/lib/Analysis/ProfileInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ProfileInfo.cpp?rev=79940&r1=79939&r2=79940&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ProfileInfo.cpp (original)
+++ llvm/trunk/lib/Analysis/ProfileInfo.cpp Mon Aug 24 16:37:48 2009
@@ -26,6 +26,8 @@
ProfileInfo::~ProfileInfo() {}
+const double ProfileInfo::MissingValue = -1;
+
double ProfileInfo::getExecutionCount(const BasicBlock *BB) {
std::map<const Function*, BlockCounts>::iterator J =
BlockInformation.find(BB->getParent());
@@ -60,7 +62,7 @@
Count += w;
}
- BlockInformation[BB->getParent()][BB] = Count;
+ if (Count != MissingValue) BlockInformation[BB->getParent()][BB] = Count;
return Count;
}
@@ -72,7 +74,7 @@
return J->second;
double Count = getExecutionCount(&F->getEntryBlock());
- FunctionInformation[F] = Count;
+ if (Count != MissingValue) FunctionInformation[F] = Count;
return Count;
}
More information about the llvm-commits
mailing list