diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-04-11 23:21:02 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-04-11 23:21:02 +0000 |
commit | 3c371e995a2ae53ca2855a6d0062ce6461549136 (patch) | |
tree | 228fcc5bf2121af620ecef6fbb370919ff248110 /include | |
parent | e9139c68d484e9c450ebc782bcb1997983ad6639 (diff) | |
download | llvm-3c371e995a2ae53ca2855a6d0062ce6461549136.tar.gz llvm-3c371e995a2ae53ca2855a6d0062ce6461549136.tar.bz2 llvm-3c371e995a2ae53ca2855a6d0062ce6461549136.tar.xz |
blockfreq: Remove unnecessary template parameters
Moves redundant template parameters into an implementation detail of
BlockFrequencyInfoImpl.
No functionality change.
<rdar://problem/14292693>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206084 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Analysis/BlockFrequencyInfo.h | 6 | ||||
-rw-r--r-- | include/llvm/Analysis/BlockFrequencyInfoImpl.h | 21 | ||||
-rw-r--r-- | include/llvm/CodeGen/MachineBlockFrequencyInfo.h | 6 |
3 files changed, 24 insertions, 9 deletions
diff --git a/include/llvm/Analysis/BlockFrequencyInfo.h b/include/llvm/Analysis/BlockFrequencyInfo.h index 79be0177d6..3289a2823c 100644 --- a/include/llvm/Analysis/BlockFrequencyInfo.h +++ b/include/llvm/Analysis/BlockFrequencyInfo.h @@ -21,14 +21,12 @@ namespace llvm { class BranchProbabilityInfo; -template <class BlockT, class FunctionT, class BranchProbInfoT> -class BlockFrequencyInfoImpl; +template <class BlockT> class BlockFrequencyInfoImpl; /// BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to /// estimate IR basic block frequencies. class BlockFrequencyInfo : public FunctionPass { - typedef BlockFrequencyInfoImpl<BasicBlock, Function, BranchProbabilityInfo> - ImplType; + typedef BlockFrequencyInfoImpl<BasicBlock> ImplType; std::unique_ptr<ImplType> BFI; public: diff --git a/include/llvm/Analysis/BlockFrequencyInfoImpl.h b/include/llvm/Analysis/BlockFrequencyInfoImpl.h index fa5e799942..9edaa98625 100644 --- a/include/llvm/Analysis/BlockFrequencyInfoImpl.h +++ b/include/llvm/Analysis/BlockFrequencyInfoImpl.h @@ -29,16 +29,35 @@ namespace llvm { +class BranchProbabilityInfo; class BlockFrequencyInfo; +class MachineBranchProbabilityInfo; class MachineBlockFrequencyInfo; +namespace bfi_detail { +template <class BlockT> struct TypeMap {}; +template <> struct TypeMap<BasicBlock> { + typedef BasicBlock BlockT; + typedef Function FunctionT; + typedef BranchProbabilityInfo BlockProbInfoT; +}; +template <> struct TypeMap<MachineBasicBlock> { + typedef MachineBasicBlock BlockT; + typedef MachineFunction FunctionT; + typedef MachineBranchProbabilityInfo BlockProbInfoT; +}; +} + /// BlockFrequencyInfoImpl implements block frequency algorithm for IR and /// Machine Instructions. Algorithm starts with value ENTRY_FREQ /// for the entry block and then propagates frequencies using branch weights /// from (Machine)BranchProbabilityInfo. LoopInfo is not required because /// algorithm can find "backedges" by itself. -template<class BlockT, class FunctionT, class BlockProbInfoT> +template <class BT> class BlockFrequencyInfoImpl { + typedef typename bfi_detail::TypeMap<BT>::BlockT BlockT; + typedef typename bfi_detail::TypeMap<BT>::FunctionT FunctionT; + typedef typename bfi_detail::TypeMap<BT>::BlockProbInfoT BlockProbInfoT; DenseMap<const BlockT *, BlockFrequency> Freqs; diff --git a/include/llvm/CodeGen/MachineBlockFrequencyInfo.h b/include/llvm/CodeGen/MachineBlockFrequencyInfo.h index fd8e1494ce..1aef689eb7 100644 --- a/include/llvm/CodeGen/MachineBlockFrequencyInfo.h +++ b/include/llvm/CodeGen/MachineBlockFrequencyInfo.h @@ -22,14 +22,12 @@ namespace llvm { class MachineBasicBlock; class MachineBranchProbabilityInfo; -template <class BlockT, class FunctionT, class BranchProbInfoT> -class BlockFrequencyInfoImpl; +template <class BlockT> class BlockFrequencyInfoImpl; /// MachineBlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation /// to estimate machine basic block frequencies. class MachineBlockFrequencyInfo : public MachineFunctionPass { - typedef BlockFrequencyInfoImpl<MachineBasicBlock, MachineFunction, - MachineBranchProbabilityInfo> ImplType; + typedef BlockFrequencyInfoImpl<MachineBasicBlock> ImplType; std::unique_ptr<ImplType> MBFI; public: |