[PATCH] D124900: [BOLT] Add icp-inline option
Amir Ayupov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 11 03:21:42 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc2d40f1dfb64: [BOLT] Add icp-inline option (authored by Amir).
Changed prior to commit:
https://reviews.llvm.org/D124900?vs=426898&id=428609#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D124900/new/
https://reviews.llvm.org/D124900
Files:
bolt/lib/Passes/IndirectCallPromotion.cpp
Index: bolt/lib/Passes/IndirectCallPromotion.cpp
===================================================================
--- bolt/lib/Passes/IndirectCallPromotion.cpp
+++ bolt/lib/Passes/IndirectCallPromotion.cpp
@@ -13,6 +13,7 @@
#include "bolt/Passes/IndirectCallPromotion.h"
#include "bolt/Passes/BinaryFunctionCallGraph.h"
#include "bolt/Passes/DataflowInfoManager.h"
+#include "bolt/Passes/Inliner.h"
#include "llvm/Support/CommandLine.h"
#define DEBUG_TYPE "ICP"
@@ -120,6 +121,10 @@
"for jump tables, optimize indirect jmp targets instead of indices"),
cl::init(false), cl::ZeroOrMore, cl::Hidden, cl::cat(BoltOptCategory));
+static cl::opt<bool> ICPPeelForInline(
+ "icp-inline", cl::desc("only promote call targets eligible for inlining"),
+ cl::init(false), cl::ZeroOrMore, cl::Hidden, cl::cat(BoltOptCategory));
+
} // namespace opts
namespace llvm {
@@ -1038,6 +1043,20 @@
}
}
+ // Filter by inline-ability of target functions, stop at first target that
+ // can't be inlined.
+ if (opts::ICPPeelForInline) {
+ for (size_t I = 0; I < N; ++I) {
+ const MCSymbol *TargetSym = Targets[I].To.Sym;
+ const BinaryFunction *TargetBF = BC.getFunctionForSymbol(TargetSym);
+ if (!BinaryFunctionPass::shouldOptimize(*TargetBF) ||
+ getInliningInfo(*TargetBF).Type == InliningType::INL_NONE) {
+ N = I;
+ break;
+ }
+ }
+ }
+
// Filter functions that can have ICP applied (for debugging)
if (!opts::ICPFuncsList.empty()) {
for (std::string &Name : opts::ICPFuncsList)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D124900.428609.patch
Type: text/x-patch
Size: 1572 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220511/ec29d488/attachment.bin>
More information about the llvm-commits
mailing list