[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