[llvm] [InlineOrder] Fix assertion failure in CostBenefitPriority (PR #195564)
via llvm-commits
llvm-commits at lists.llvm.org
Sun May 3 17:51:47 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-transforms
Author: Kazu Hirata (kazutakahirata)
<details>
<summary>Changes</summary>
InlineCost::getStaticBonusApplied() triggers an assertion failure
if the CostBenefitPriority constructor calls it when
IC.isVariable() is false. This is because
getStaticBonusApplied() expects isVariable() to be true.
This patch fixes the crash by calling getStaticBonusApplied() only
when IC.isVariable() is true.
---
Full diff: https://github.com/llvm/llvm-project/pull/195564.diff
2 Files Affected:
- (modified) llvm/lib/Analysis/InlineOrder.cpp (+5-3)
- (added) llvm/test/Transforms/Inline/module-inliner-cba-crash.ll (+11)
``````````diff
diff --git a/llvm/lib/Analysis/InlineOrder.cpp b/llvm/lib/Analysis/InlineOrder.cpp
index f54e040ff83c7..0da045b3fd4ba 100644
--- a/llvm/lib/Analysis/InlineOrder.cpp
+++ b/llvm/lib/Analysis/InlineOrder.cpp
@@ -114,11 +114,13 @@ class CostBenefitPriority {
CostBenefitPriority(const CallBase *CB, FunctionAnalysisManager &FAM,
const InlineParams &Params) {
auto IC = getInlineCostWrapper(const_cast<CallBase &>(*CB), FAM, Params);
- if (IC.isVariable())
+ if (IC.isVariable()) {
Cost = IC.getCost();
- else
+ StaticBonusApplied = IC.getStaticBonusApplied();
+ } else {
Cost = IC.isNever() ? INT_MAX : INT_MIN;
- StaticBonusApplied = IC.getStaticBonusApplied();
+ StaticBonusApplied = 0;
+ }
CostBenefit = IC.getCostBenefit();
}
diff --git a/llvm/test/Transforms/Inline/module-inliner-cba-crash.ll b/llvm/test/Transforms/Inline/module-inliner-cba-crash.ll
new file mode 100644
index 0000000000000..ae4bdf6b33abf
--- /dev/null
+++ b/llvm/test/Transforms/Inline/module-inliner-cba-crash.ll
@@ -0,0 +1,11 @@
+; RUN: opt -passes='module-inline' -inline-priority-mode=cost-benefit -S < %s
+
+define i1 @foo() {
+ call ptr @bar(ptr null)
+ ret i1 true
+}
+
+define ptr @bar(ptr %0) {
+ call ptr @bar(ptr null)
+ ret ptr null
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/195564
More information about the llvm-commits
mailing list