aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-08 21:30:18 +0000
committerChris Lattner <sabre@nondot.org>2004-03-08 21:30:18 +0000
commit0f54bc7630065eee51739596d77d91b751c6b71d (patch)
tree3ef027e689a64c41d119aeca40343f5bf870ad44
parent3f25328fbff583894772e45bb088e995b371190f (diff)
We don't want to make this a pure interface, as it makes all implementors
bear the burden of implementing what will be all exactly the same methods. They just want to provide the information in differing ways. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12239 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Analysis/ProfileInfo.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/include/llvm/Analysis/ProfileInfo.h b/include/llvm/Analysis/ProfileInfo.h
index 10b31d5ded..3bb056bf83 100644
--- a/include/llvm/Analysis/ProfileInfo.h
+++ b/include/llvm/Analysis/ProfileInfo.h
@@ -22,6 +22,7 @@
#define LLVM_ANALYSIS_PROFILEINFO_H
#include <string>
+#include <map>
namespace llvm {
class BasicBlock;
@@ -32,13 +33,19 @@ namespace llvm {
/// it available to the optimizers.
Pass *createProfileLoaderPass(const std::string &Filename);
- struct ProfileInfo {
+ class ProfileInfo {
+ protected:
+ std::map<BasicBlock*, unsigned> ExecutionCounts;
+ public:
virtual ~ProfileInfo(); // We want to be subclassed
//===------------------------------------------------------------------===//
/// Profile Information Queries
///
- virtual unsigned getExecutionCount(BasicBlock *BB) = 0;
+ unsigned getExecutionCount(BasicBlock *BB) {
+ std::map<BasicBlock*, unsigned>::iterator I = ExecutionCounts.find(BB);
+ return I != ExecutionCounts.end() ? I->second : 0;
+ }
//===------------------------------------------------------------------===//
/// Analysis Update Methods