Fix the assertion failure caused by http://reviews.llvm.org/D22118

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

llvm-svn: 275079
This commit is contained in:
Dehao Chen 2016-07-11 17:36:02 +00:00
parent c2406d46b8
commit 71021cdf47
2 changed files with 3 additions and 2 deletions

View File

@ -40,7 +40,7 @@ MDNode *MDBuilder::createBranchWeights(uint32_t TrueWeight,
}
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");

View File

@ -1315,7 +1315,8 @@ bool Instruction::extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal) {
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;