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 -} - _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
