[llvm] 0a5e572 - [Inliner] Fix bugs for partial inlining with vector
    via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Aug  1 05:07:12 PDT 2024
    
    
  
Author: joshua-arch1
Date: 2024-08-01T20:07:08+08:00
New Revision: 0a5e5728fbb61d7c775aabc8048b7b629e9ca2d2
URL: https://github.com/llvm/llvm-project/commit/0a5e5728fbb61d7c775aabc8048b7b629e9ca2d2
DIFF: https://github.com/llvm/llvm-project/commit/0a5e5728fbb61d7c775aabc8048b7b629e9ca2d2.diff
LOG: [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.
Added: 
    
Modified: 
    llvm/lib/Transforms/IPO/PartialInlining.cpp
Removed: 
    
################################################################################
diff  --git a/llvm/lib/Transforms/IPO/PartialInlining.cpp b/llvm/lib/Transforms/IPO/PartialInlining.cpp
index 3ca095e1520f3..effdb17370201 100644
--- a/llvm/lib/Transforms/IPO/PartialInlining.cpp
+++ b/llvm/lib/Transforms/IPO/PartialInlining.cpp
@@ -1308,8 +1308,8 @@ bool PartialInlinerImpl::tryPartialInline(FunctionCloner &Cloner) {
   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.
        
    
    
More information about the llvm-commits
mailing list