[llvm] [BOLT] Remove cl::callback uses (PR #226359)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 24 22:29:57 PDT 2026
https://github.com/MaskRay created https://github.com/llvm/llvm-project/pull/226359
cl::callback will be removed to enable migration to TableGen based
representation.
https://discourse.llvm.org/t/rfc-declare-library-command-line-options-in-tablegen-one-struct-per-library/91877/3
LLM-aided
>From e920b45f685ae9c4a07d0be247c8afeb22203e49 Mon Sep 17 00:00:00 2001
From: Fangrui Song <i at maskray.me>
Date: Thu, 24 Sep 2026 21:59:56 -0700
Subject: [PATCH] [BOLT] Remove cl::callback uses
cl::callback will be removed to enable migration to TableGen based
representation.
https://discourse.llvm.org/t/rfc-declare-library-command-line-options-in-tablegen-one-struct-per-library/91877/3
LLM-aided
---
bolt/lib/Passes/BinaryPasses.cpp | 14 ++++++--------
bolt/lib/Passes/ReorderFunctions.cpp | 15 +++++++--------
bolt/lib/Profile/DataAggregator.cpp | 12 ++++++------
3 files changed, 19 insertions(+), 22 deletions(-)
diff --git a/bolt/lib/Passes/BinaryPasses.cpp b/bolt/lib/Passes/BinaryPasses.cpp
index b36674344b17f..5c8208f96bc4a 100644
--- a/bolt/lib/Passes/BinaryPasses.cpp
+++ b/bolt/lib/Passes/BinaryPasses.cpp
@@ -172,14 +172,7 @@ cl::opt<bolt::ReorderBasicBlocks::LayoutType> ReorderBlocks(
"perform layout optimizing I-cache behavior"),
clEnumValN(bolt::ReorderBasicBlocks::LT_OPTIMIZE_SHUFFLE,
"cluster-shuffle", "perform random layout of clusters")),
- cl::cat(BoltOptCategory),
- cl::callback([](const bolt::ReorderBasicBlocks::LayoutType &option) {
- if (option == bolt::ReorderBasicBlocks::LT_OPTIMIZE_CACHE_PLUS) {
- errs() << "BOLT-WARNING: '-reorder-blocks=cache+' is deprecated, please"
- << " use '-reorder-blocks=ext-tsp' instead\n";
- ReorderBlocks = bolt::ReorderBasicBlocks::LT_OPTIMIZE_EXT_TSP;
- }
- }));
+ cl::cat(BoltOptCategory));
static cl::opt<unsigned> ReportBadLayout(
"report-bad-layout",
@@ -415,6 +408,11 @@ bool ReorderBasicBlocks::shouldOptimize(const BinaryFunction &BF) const {
}
Error ReorderBasicBlocks::runOnFunctions(BinaryContext &BC) {
+ if (opts::ReorderBlocks == ReorderBasicBlocks::LT_OPTIMIZE_CACHE_PLUS) {
+ BC.errs() << "BOLT-WARNING: '-reorder-blocks=cache+' is deprecated, please"
+ << " use '-reorder-blocks=ext-tsp' instead\n";
+ opts::ReorderBlocks = ReorderBasicBlocks::LT_OPTIMIZE_EXT_TSP;
+ }
if (opts::ReorderBlocks == ReorderBasicBlocks::LT_NONE)
return Error::success();
diff --git a/bolt/lib/Passes/ReorderFunctions.cpp b/bolt/lib/Passes/ReorderFunctions.cpp
index 9fbf73078a537..d144209790734 100644
--- a/bolt/lib/Passes/ReorderFunctions.cpp
+++ b/bolt/lib/Passes/ReorderFunctions.cpp
@@ -53,14 +53,7 @@ cl::opt<bolt::ReorderFunctions::ReorderType> ReorderFunctions(
"reorder functions randomly"),
clEnumValN(bolt::ReorderFunctions::RT_USER, "user",
"use function order specified by -function-order")),
- cl::cat(BoltOptCategory),
- cl::callback([](const bolt::ReorderFunctions::ReorderType &option) {
- if (option == bolt::ReorderFunctions::RT_HFSORT_PLUS) {
- errs() << "BOLT-WARNING: '-reorder-functions=hfsort+' is deprecated,"
- << " please use '-reorder-functions=cdsort' instead\n";
- ReorderFunctions = bolt::ReorderFunctions::RT_CDSORT;
- }
- }));
+ cl::cat(BoltOptCategory));
static cl::opt<bool> ReorderFunctionsUseHotSize(
"reorder-functions-use-hot-size",
@@ -351,6 +344,12 @@ Expected<uint32_t> ReorderFunctions::assignFunctionOrder(
Error ReorderFunctions::runOnFunctions(BinaryContext &BC) {
auto &BFs = BC.getBinaryFunctions();
+ if (opts::ReorderFunctions == RT_HFSORT_PLUS) {
+ BC.errs() << "BOLT-WARNING: '-reorder-functions=hfsort+' is deprecated,"
+ << " please use '-reorder-functions=cdsort' instead\n";
+ opts::ReorderFunctions = RT_CDSORT;
+ }
+
// If a function order file is provided but no reorder algorithm was
// explicitly specified, default to RT_USER.
if (!opts::FunctionOrderFile.empty()) {
diff --git a/bolt/lib/Profile/DataAggregator.cpp b/bolt/lib/Profile/DataAggregator.cpp
index a18e4d3d3a0d2..dc9ea2719e315 100644
--- a/bolt/lib/Profile/DataAggregator.cpp
+++ b/bolt/lib/Profile/DataAggregator.cpp
@@ -57,12 +57,7 @@ static cl::alias BasicAggregationAlias("ba",
static cl::opt<bool> DeprecatedBasicAggregationNl(
"nl", cl::desc("Alias for --basic-events (deprecated. Use --ba)"),
- cl::cat(AggregatorCategory), cl::ReallyHidden,
- cl::callback([](const bool &Enabled) {
- errs()
- << "BOLT-WARNING: '-nl' is deprecated, please use '--ba' instead.\n";
- BasicAggregation = Enabled;
- }));
+ cl::cat(AggregatorCategory), cl::ReallyHidden);
cl::opt<bool> ArmSPE("spe", cl::desc("Enable Arm SPE mode."),
cl::cat(AggregatorCategory));
@@ -923,6 +918,11 @@ Error DataAggregator::preprocessProfile(BinaryContext &BC) {
if (!opts::HeatmapMode && opts::HeatmapOutput.getNumOccurrences())
opts::HeatmapMode = opts::HeatmapModeKind::HM_Optional;
+ if (opts::DeprecatedBasicAggregationNl.getNumOccurrences()) {
+ errs() << "BOLT-WARNING: '-nl' is deprecated, please use '--ba' instead.\n";
+ opts::BasicAggregation = opts::DeprecatedBasicAggregationNl;
+ }
+
this->BC = &BC;
if (!opts::ReadPreAggregated)
More information about the llvm-commits
mailing list