mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
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
This commit is contained in:
parent
3f25328fbf
commit
0f54bc7630
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user