diff options
author | Jakub Staszak <jstaszak@apple.com> | 2011-07-25 19:25:40 +0000 |
---|---|---|
committer | Jakub Staszak <jstaszak@apple.com> | 2011-07-25 19:25:40 +0000 |
commit | 875ebd5f5d6fa0d447244d376cc95853b652bca6 (patch) | |
tree | 8f0b89ff3cc807ef7b836d10a6a264a383efa663 /llvm/lib/Analysis/BlockFrequencyInfo.cpp | |
parent | ac50dcf6d3501f814ac25403d9c6606f86e619fc (diff) | |
download | bcm5719-llvm-875ebd5f5d6fa0d447244d376cc95853b652bca6.tar.gz bcm5719-llvm-875ebd5f5d6fa0d447244d376cc95853b652bca6.zip |
Rename BlockFrequency to BlockFrequencyInfo and MachineBlockFrequency to
MachineBlockFrequencyInfo.
llvm-svn: 135937
Diffstat (limited to 'llvm/lib/Analysis/BlockFrequencyInfo.cpp')
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfo.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfo.cpp b/llvm/lib/Analysis/BlockFrequencyInfo.cpp new file mode 100644 index 00000000000..b93e9a6aa95 --- /dev/null +++ b/llvm/lib/Analysis/BlockFrequencyInfo.cpp @@ -0,0 +1,59 @@ +//=======-------- BlockFrequencyInfo.cpp - Block Frequency Analysis -------=======// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Loops should be simplified before this analysis. +// +//===----------------------------------------------------------------------===// + +#include "llvm/InitializePasses.h" +#include "llvm/Analysis/BlockFrequencyImpl.h" +#include "llvm/Analysis/BlockFrequencyInfo.h" +#include "llvm/Analysis/LoopInfo.h" +#include "llvm/Analysis/Passes.h" +#include "llvm/Analysis/BranchProbabilityInfo.h" + +using namespace llvm; + +INITIALIZE_PASS_BEGIN(BlockFrequencyInfo, "block-freq", "Block Frequency Analysis", + true, true) +INITIALIZE_PASS_DEPENDENCY(BranchProbabilityInfo) +INITIALIZE_PASS_END(BlockFrequencyInfo, "block-freq", "Block Frequency Analysis", + true, true) + +char BlockFrequencyInfo::ID = 0; + + +BlockFrequencyInfo::BlockFrequencyInfo() : FunctionPass(ID) { + initializeBlockFrequencyInfoPass(*PassRegistry::getPassRegistry()); + BFI = new BlockFrequencyImpl<BasicBlock, Function, BranchProbabilityInfo>(); +} + +BlockFrequencyInfo::~BlockFrequencyInfo() { + delete BFI; +} + +void BlockFrequencyInfo::getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired<BranchProbabilityInfo>(); + AU.setPreservesAll(); +} + +bool BlockFrequencyInfo::runOnFunction(Function &F) { + BranchProbabilityInfo &BPI = getAnalysis<BranchProbabilityInfo>(); + BFI->doFunction(&F, &BPI); + return false; +} + +/// getblockFreq - Return block frequency. Return 0 if we don't have the +/// information. Please note that initial frequency is equal to 1024. It means +/// that we should not rely on the value itself, but only on the comparison to +/// the other block frequencies. We do this to avoid using of floating points. +/// +uint32_t BlockFrequencyInfo::getBlockFreq(BasicBlock *BB) { + return BFI->getBlockFreq(BB); +} |