Summary: http://reviews.llvm.org/D22118 uses metadata to store the call count, which makes it possible to have branch weight to have only one elements. Also fix the assertion failure in inliner when checking the instruction type to include "invoke" instruction.
Reviewers: mkuper, dnovillo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22228
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275079
91177308-0d34-0410-b5e6-
96231b3b80d8
}
MDNode *MDBuilder::createBranchWeights(ArrayRef<uint32_t> Weights) {
- assert(Weights.size() >= 2 && "Need at least two branch weights!");
+ assert(Weights.size() >= 1 && "Need at least one branch weights!");
SmallVector<Metadata *, 4> Vals(Weights.size() + 1);
Vals[0] = createString("branch_weights");
bool Instruction::extractProfTotalWeight(uint64_t &TotalVal) {
assert((getOpcode() == Instruction::Br ||
getOpcode() == Instruction::Select ||
- getOpcode() == Instruction::Call) &&
+ getOpcode() == Instruction::Call ||
+ getOpcode() == Instruction::Invoke) &&
"Looking for branch weights on something besides branch");
TotalVal = 0;