diff options
author | Manman Ren <manman.ren@gmail.com> | 2014-01-29 23:18:47 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2014-01-29 23:18:47 +0000 |
commit | b681918dddd205fc47e30c67c5350dd2fda2aa1a (patch) | |
tree | 44382355465a2d9689d4722d0ef0ed8a31abcd55 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
parent | 933edd04af0b0d2926832e601e982aacda155e2e (diff) | |
download | bcm5719-llvm-b681918dddd205fc47e30c67c5350dd2fda2aa1a.tar.gz bcm5719-llvm-b681918dddd205fc47e30c67c5350dd2fda2aa1a.zip |
PGO branch weight: update edge weights in IfConverter.
This commit only handles IfConvertTriangle. To update edge weights
of a successor, one interface is added to MachineBasicBlock:
/// Set successor weight of a given iterator.
setSuccWeight(succ_iterator I, uint32_t weight)
An existing testing case test/CodeGen/Thumb2/v8_IT_5.ll is updated,
since we now correctly update the edge weights, the cold block
is placed at the end of the function and we jump to the cold block.
llvm-svn: 200428
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index 5bd47c2f1d2..d2df4e5cb8b 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -1123,6 +1123,13 @@ uint32_t MachineBasicBlock::getSuccWeight(const_succ_iterator Succ) const { return *getWeightIterator(Succ); } +/// Set successor weight of a given iterator. +void MachineBasicBlock::setSuccWeight(succ_iterator I, uint32_t weight) { + if (Weights.empty()) + return; + *getWeightIterator(I) = weight; +} + /// getWeightIterator - Return wight iterator corresonding to the I successor /// iterator MachineBasicBlock::weight_iterator MachineBasicBlock:: |