[Inliner] Fix bugs for partial inlining with vector
In the cost model of partial inlining, cost for intrinsics
will be applied. However, some intrinsics for vector have
invalid cost, which is not allowed for partial inlining.
Instead of assertion, we directly do not do partial
inlining in this circumstance to avoid compiling errors.
diff --git a/llvm/lib/Transforms/IPO/PartialInlining.cpp b/llvm/lib/Transforms/IPO/PartialInlining.cpp
index 3ca095e..effdb17 100644
--- a/llvm/lib/Transforms/IPO/PartialInlining.cpp
+++ b/llvm/lib/Transforms/IPO/PartialInlining.cpp
@@ -1308,8 +1308,8 @@
InstructionCost SizeCost = std::get<0>(OutliningCosts);
InstructionCost NonWeightedRcost = std::get<1>(OutliningCosts);
- assert(SizeCost.isValid() && NonWeightedRcost.isValid() &&
- "Expected valid costs");
+ if (!SizeCost.isValid() || !NonWeightedRcost.isValid())
+ return false;
// Only calculate RelativeToEntryFreq when we are doing single region
// outlining.