Explorar o código

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275079 91177308-0d34-0410-b5e6-96231b3b80d8
Dehao Chen %!s(int64=9) %!d(string=hai) anos
pai
achega
1c6f7aba02
Modificáronse 2 ficheiros con 3 adicións e 2 borrados
  1. 1 1
      lib/IR/MDBuilder.cpp
  2. 2 1
      lib/IR/Metadata.cpp

+ 1 - 1
lib/IR/MDBuilder.cpp

@@ -40,7 +40,7 @@ MDNode *MDBuilder::createBranchWeights(uint32_t TrueWeight,
 }
 }
 
 
 MDNode *MDBuilder::createBranchWeights(ArrayRef<uint32_t> Weights) {
 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);
   SmallVector<Metadata *, 4> Vals(Weights.size() + 1);
   Vals[0] = createString("branch_weights");
   Vals[0] = createString("branch_weights");

+ 2 - 1
lib/IR/Metadata.cpp

@@ -1315,7 +1315,8 @@ bool Instruction::extractProfMetadata(uint64_t &TrueVal, uint64_t &FalseVal) {
 bool Instruction::extractProfTotalWeight(uint64_t &TotalVal) {
 bool Instruction::extractProfTotalWeight(uint64_t &TotalVal) {
   assert((getOpcode() == Instruction::Br ||
   assert((getOpcode() == Instruction::Br ||
           getOpcode() == Instruction::Select ||
           getOpcode() == Instruction::Select ||
-          getOpcode() == Instruction::Call) &&
+          getOpcode() == Instruction::Call ||
+          getOpcode() == Instruction::Invoke) &&
          "Looking for branch weights on something besides branch");
          "Looking for branch weights on something besides branch");
 
 
   TotalVal = 0;
   TotalVal = 0;