From 00874c48ea4d291908517afaab50d1dcbfb016c3 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Tue, 20 Sep 2022 09:09:38 -0700 Subject: [PATCH] [IPO] Reorder parameters of InlineFunction (NFC) With the recent addition of new parameter MergeAttributes (D134117), callers need to specify several default parameters before getting to specify the new parameter. This patch reorders the parameters so that callers do not have to specify as many default parameters. Differential Revision: https://reviews.llvm.org/D134125 --- llvm/include/llvm/Transforms/Utils/Cloning.h | 4 ++-- llvm/lib/Transforms/IPO/AlwaysInliner.cpp | 7 +++---- llvm/lib/Transforms/IPO/Inliner.cpp | 12 +++++------- llvm/lib/Transforms/IPO/ModuleInliner.cpp | 6 ++---- llvm/lib/Transforms/IPO/PartialInlining.cpp | 2 +- llvm/lib/Transforms/IPO/SampleProfile.cpp | 3 --- llvm/lib/Transforms/Utils/InlineFunction.cpp | 4 ++-- 7 files changed, 15 insertions(+), 23 deletions(-) diff --git a/llvm/include/llvm/Transforms/Utils/Cloning.h b/llvm/include/llvm/Transforms/Utils/Cloning.h index 31309a1..72276eb 100644 --- a/llvm/include/llvm/Transforms/Utils/Cloning.h +++ b/llvm/include/llvm/Transforms/Utils/Cloning.h @@ -264,10 +264,10 @@ public: /// The callee's function attributes are merged into the callers' if /// MergeAttributes is set to true. InlineResult InlineFunction(CallBase &CB, InlineFunctionInfo &IFI, + bool MergeAttributes = false, AAResults *CalleeAAR = nullptr, bool InsertLifetime = true, - Function *ForwardVarArgsTo = nullptr, - bool MergeAttributes = false); + Function *ForwardVarArgsTo = nullptr); /// Clones a loop \p OrigLoop. Returns the loop and the blocks in \p /// Blocks. diff --git a/llvm/lib/Transforms/IPO/AlwaysInliner.cpp b/llvm/lib/Transforms/IPO/AlwaysInliner.cpp index 377f224..0928648 100644 --- a/llvm/lib/Transforms/IPO/AlwaysInliner.cpp +++ b/llvm/lib/Transforms/IPO/AlwaysInliner.cpp @@ -70,10 +70,9 @@ PreservedAnalyses AlwaysInlinerPass::run(Module &M, &FAM.getResult(*Caller), &FAM.getResult(F)); - InlineResult Res = InlineFunction( - *CB, IFI, &FAM.getResult(F), InsertLifetime, - /*ForwardVarArgsTo=*/nullptr, - /*MergeAttributes=*/true); + InlineResult Res = + InlineFunction(*CB, IFI, /*MergeAttributes=*/true, + &FAM.getResult(F), InsertLifetime); if (!Res.isSuccess()) { ORE.emit([&]() { return OptimizationRemarkMissed(DEBUG_TYPE, "NotInlined", DLoc, diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp index d3390e0..ea462f4 100644 --- a/llvm/lib/Transforms/IPO/Inliner.cpp +++ b/llvm/lib/Transforms/IPO/Inliner.cpp @@ -315,9 +315,9 @@ static InlineResult inlineCallIfPossible( // Try to inline the function. Get the list of static allocas that were // inlined. - InlineResult IR = InlineFunction(CB, IFI, &AAR, InsertLifetime, - /*ForwardVarArgsTo=*/nullptr, - /*MergeAttributes=*/true); + InlineResult IR = + InlineFunction(CB, IFI, + /*MergeAttributes=*/true, &AAR, InsertLifetime); if (!IR.isSuccess()) return IR; @@ -915,10 +915,8 @@ PreservedAnalyses InlinerPass::run(LazyCallGraph::SCC &InitialC, &FAM.getResult(Callee)); InlineResult IR = - InlineFunction(*CB, IFI, &FAM.getResult(*CB->getCaller()), - /*InsertLifetime=*/true, - /*ForwardVarArgsTo=*/nullptr, - /*MergeAttributes=*/true); + InlineFunction(*CB, IFI, /*MergeAttributes=*/true, + &FAM.getResult(*CB->getCaller())); if (!IR.isSuccess()) { Advice->recordUnsuccessfulInlining(IR); continue; diff --git a/llvm/lib/Transforms/IPO/ModuleInliner.cpp b/llvm/lib/Transforms/IPO/ModuleInliner.cpp index 66c5731..ee38265 100644 --- a/llvm/lib/Transforms/IPO/ModuleInliner.cpp +++ b/llvm/lib/Transforms/IPO/ModuleInliner.cpp @@ -218,10 +218,8 @@ PreservedAnalyses ModuleInlinerPass::run(Module &M, &FAM.getResult(Callee)); InlineResult IR = - InlineFunction(*CB, IFI, &FAM.getResult(*CB->getCaller()), - /*InsertLifetime=*/true, - /*ForwardVarArgsTo=*/nullptr, - /*MergeAttributes=*/true); + InlineFunction(*CB, IFI, /*MergeAttributes=*/true, + &FAM.getResult(*CB->getCaller())); if (!IR.isSuccess()) { Advice->recordUnsuccessfulInlining(IR); continue; diff --git a/llvm/lib/Transforms/IPO/PartialInlining.cpp b/llvm/lib/Transforms/IPO/PartialInlining.cpp index 653addd..13e44cf 100644 --- a/llvm/lib/Transforms/IPO/PartialInlining.cpp +++ b/llvm/lib/Transforms/IPO/PartialInlining.cpp @@ -1434,7 +1434,7 @@ bool PartialInlinerImpl::tryPartialInline(FunctionCloner &Cloner) { InlineFunctionInfo IFI(nullptr, GetAssumptionCache, &PSI); // We can only forward varargs when we outlined a single region, else we // bail on vararg functions. - if (!InlineFunction(*CB, IFI, nullptr, true, + if (!InlineFunction(*CB, IFI, /*MergeAttributes=*/false, nullptr, true, (Cloner.ClonedOI ? Cloner.OutlinedFunctions.back().first : nullptr)) .isSuccess()) diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp index a326f23..bbdbabb 100644 --- a/llvm/lib/Transforms/IPO/SampleProfile.cpp +++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp @@ -1222,9 +1222,6 @@ bool SampleProfileLoader::tryInlineCandidate( InlineFunctionInfo IFI(nullptr, GetAC); IFI.UpdateProfile = false; InlineResult IR = InlineFunction(CB, IFI, - /*CalleeAAR=*/nullptr, - /*InsertLifetime=*/true, - /*ForwardVarArgsTo=*/nullptr, /*MergeAttributes=*/true); if (!IR.isSuccess()) return false; diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 1ea73d1..cf7541f 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -1784,10 +1784,10 @@ inlineRetainOrClaimRVCalls(CallBase &CB, objcarc::ARCInstKind RVCallKind, /// exists in the instruction stream. Similarly this will inline a recursive /// function by one level. llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI, + bool MergeAttributes, AAResults *CalleeAAR, bool InsertLifetime, - Function *ForwardVarArgsTo, - bool MergeAttributes) { + Function *ForwardVarArgsTo) { assert(CB.getParent() && CB.getFunction() && "Instruction not in function!"); // FIXME: we don't inline callbr yet. -- 2.7.4