[llvm-branch-commits] [llvm] 60ed0ca - Revert "[Inliner] Add option (default off) to inline all calls regardless of …"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Feb 8 10:33:56 PST 2026
Author: Justin Fargnoli
Date: 2026-02-08T10:33:52-08:00
New Revision: 60ed0ca21e9e7a357bee2e8ce41035d970b0c110
URL: https://github.com/llvm/llvm-project/commit/60ed0ca21e9e7a357bee2e8ce41035d970b0c110
DIFF: https://github.com/llvm/llvm-project/commit/60ed0ca21e9e7a357bee2e8ce41035d970b0c110.diff
LOG: Revert "[Inliner] Add option (default off) to inline all calls regardless of …"
This reverts commit 58de8f2c25291549dc1cabe364d399e564bca042.
Added:
Modified:
llvm/lib/Analysis/InlineCost.cpp
Removed:
llvm/test/Transforms/Inline/inline-all-viable-calls.ll
################################################################################
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp
index e0054e3ed6ee2..0e01dba293bb2 100644
--- a/llvm/lib/Analysis/InlineCost.cpp
+++ b/llvm/lib/Analysis/InlineCost.cpp
@@ -180,10 +180,6 @@ static cl::opt<bool> DisableGEPConstOperand(
"disable-gep-const-evaluation", cl::Hidden, cl::init(false),
cl::desc("Disables evaluation of GetElementPtr with constant operands"));
-static cl::opt<bool> InlineAllViableCalls(
- "inline-all-viable-calls", cl::Hidden, cl::init(false),
- cl::desc("Inline all viable calls, even if they exceed the inlining "
- "threshold"));
namespace llvm {
std::optional<int> getStringFnAttrAsInt(const Attribute &Attr) {
if (Attr.isValid()) {
@@ -3275,10 +3271,6 @@ InlineCost llvm::getInlineCost(
return llvm::InlineCost::getNever(UserDecision->getFailureReason());
}
- if (InlineAllViableCalls && isInlineViable(*Callee).isSuccess())
- return llvm::InlineCost::getAlways(
- "Inlining forced by -inline-all-viable-calls");
-
LLVM_DEBUG(llvm::dbgs() << " Analyzing call of " << Callee->getName()
<< "... (caller:" << Call.getCaller()->getName()
<< ")\n");
diff --git a/llvm/test/Transforms/Inline/inline-all-viable-calls.ll b/llvm/test/Transforms/Inline/inline-all-viable-calls.ll
deleted file mode 100644
index a06ec1acd4ef3..0000000000000
--- a/llvm/test/Transforms/Inline/inline-all-viable-calls.ll
+++ /dev/null
@@ -1,114 +0,0 @@
-; RUN: opt -passes=inline -inline-threshold=0 -inline-all-viable-calls -S < %s | FileCheck %s
-
-; Check that viable calls that are beyond the cost threshold are still inlined.
-define i32 @callee_simple(i32 %x) {
- %1 = add i32 %x, 1
- %2 = mul i32 %1, 2
- %3 = sub i32 %2, 1
- %4 = add i32 %3, 3
- %5 = mul i32 %4, 2
- %6 = sub i32 %5, 2
- %7 = add i32 %6, 1
- ret i32 %7
-}
-
-; Check that user decisions are respected.
-define i32 @callee_alwaysinline(i32 %x) alwaysinline {
- %sub = sub i32 %x, 3
- ret i32 %sub
-}
-
-define i32 @callee_noinline(i32 %x) noinline {
- %div = sdiv i32 %x, 2
- ret i32 %div
-}
-
-define i32 @callee_optnone(i32 %x) optnone noinline {
- %rem = srem i32 %x, 2
- ret i32 %rem
-}
-
-define i32 @caller(i32 %a) {
-; CHECK-LABEL: define i32 @caller(
-; CHECK-SAME: i32 [[A:%.*]]) {
-; CHECK-NEXT: [[TMP7:%.*]] = add i32 [[A]], 1
-; CHECK-NEXT: [[TMP8:%.*]] = mul i32 [[TMP7]], 2
-; CHECK-NEXT: [[TMP3:%.*]] = sub i32 [[TMP8]], 1
-; CHECK-NEXT: [[TMP4:%.*]] = add i32 [[TMP3]], 3
-; CHECK-NEXT: [[TMP5:%.*]] = mul i32 [[TMP4]], 2
-; CHECK-NEXT: [[TMP6:%.*]] = sub i32 [[TMP5]], 2
-; CHECK-NEXT: [[ADD_I:%.*]] = add i32 [[TMP6]], 1
-; CHECK-NEXT: [[SUB_I:%.*]] = sub i32 [[ADD_I]], 3
-; CHECK-NEXT: [[TMP1:%.*]] = call i32 @callee_noinline(i32 [[SUB_I]])
-; CHECK-NEXT: [[TMP2:%.*]] = call i32 @callee_optnone(i32 [[TMP1]])
-; CHECK-NEXT: [[SUM:%.*]] = add i32 [[TMP2]], [[TMP1]]
-; CHECK-NEXT: ret i32 [[SUM]]
-;
- %1 = call i32 @callee_simple(i32 %a)
- %2 = call i32 @callee_alwaysinline(i32 %1)
- %3 = call i32 @callee_noinline(i32 %2)
- %4 = call i32 @callee_optnone(i32 %3)
- %sum = add i32 %4, %3
- ret i32 %sum
-}
-
-; Check that non-viable calls are not inlined
-
-; Test recursive function is not inlined
-define i32 @recursive(i32 %n) {
-entry:
- %cmp = icmp eq i32 %n, 0
- br i1 %cmp, label %base, label %recurse
-
-base:
- ret i32 0
-
-recurse:
- %dec = sub i32 %n, 1
- %rec = call i32 @recursive(i32 %dec)
- %add = add i32 %rec, 1
- ret i32 %add
-}
-
-define i32 @call_recursive(i32 %x) {
-; CHECK-LABEL: define i32 @call_recursive(
-; CHECK-SAME: i32 [[X:%.*]]) {
-; CHECK-NEXT: [[R:%.*]] = call i32 @recursive(i32 [[X]])
-; CHECK-NEXT: ret i32 [[R]]
-;
- %r = call i32 @recursive(i32 %x)
- ret i32 %r
-}
-
-; Test indirectbr prevents inlining
-define void @has_indirectbr(ptr %ptr, i32 %cond) {
-entry:
- switch i32 %cond, label %default [
- i32 0, label %target0
- i32 1, label %target1
- ]
-
-target0:
- br label %end
-
-target1:
- br label %end
-
-default:
- br label %end
-
-end:
- indirectbr ptr %ptr, [label %target0, label %target1]
- ret void
-}
-
-define void @call_indirectbr(ptr %p, i32 %c) {
-; CHECK-LABEL: define void @call_indirectbr(
-; CHECK-SAME: ptr [[P:%.*]], i32 [[C:%.*]]) {
-; CHECK-NEXT: call void @has_indirectbr(ptr [[P]], i32 [[C]])
-; CHECK-NEXT: ret void
-;
- call void @has_indirectbr(ptr %p, i32 %c)
- ret void
-}
-
More information about the llvm-branch-commits
mailing list