[llvm] [LLVM][CodeGen] Rename `gc-empty-basic-blocks` to `enable-gc-empty-basic-blocks` (PR #176018)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 14 17:03:09 PST 2026
https://github.com/jurahul updated https://github.com/llvm/llvm-project/pull/176018
>From c7bd87185cab4edc8e7d09cf29654cf385454ac5 Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Wed, 14 Jan 2026 11:36:21 -0800
Subject: [PATCH 1/2] [LLVM][CodeGen] Rename `gc-empty-basic-blocks` to
`enable-gc-empty-basic-blocks`
Rename the `gc-empty-basic-blocks` command line option to
`enable-gc-empty-basic-blocks` in preparation of adding calls to
initializing the pass in `initializeCodeGen`.
---
llvm/include/llvm/Target/CGPassBuilderOption.h | 2 +-
llvm/lib/CodeGen/TargetPassConfig.cpp | 10 +++++-----
.../CodeGen/X86/basic-block-address-map-empty-block.ll | 4 ++--
llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll | 8 ++++----
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/llvm/include/llvm/Target/CGPassBuilderOption.h b/llvm/include/llvm/Target/CGPassBuilderOption.h
index f1505e72ce9fc..8f9d55226e68a 100644
--- a/llvm/include/llvm/Target/CGPassBuilderOption.h
+++ b/llvm/include/llvm/Target/CGPassBuilderOption.h
@@ -62,7 +62,7 @@ struct CGPassBuilderOption {
bool EnableLoopTermFold = false;
bool MISchedPostRA = false;
bool EarlyLiveIntervals = false;
- bool GCEmptyBlocks = false;
+ bool EnableGCEmptyBlocks = false;
bool DisableLSR = false;
bool DisableCGP = false;
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index 27e1afdcd7724..db0f692584fc1 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -266,9 +266,9 @@ static cl::opt<bool> DisableSelectOptimize(
cl::desc("Disable the select-optimization pass from running"));
/// Enable garbage-collecting empty basic blocks.
-static cl::opt<bool>
- GCEmptyBlocks("gc-empty-basic-blocks", cl::init(false), cl::Hidden,
- cl::desc("Enable garbage-collecting empty basic blocks"));
+static cl::opt<bool> EnableGCEmptyBlocks(
+ "enable-gc-empty-basic-blocks", cl::init(false), cl::Hidden,
+ cl::desc("Enable garbage-collecting empty basic blocks"));
static cl::opt<bool>
SplitStaticData("split-static-data", cl::Hidden, cl::init(false),
@@ -510,7 +510,7 @@ CGPassBuilderOption llvm::getCGPassBuilderOption() {
SET_OPTION(DisableExpandReductions)
SET_OPTION(PrintAfterISel)
SET_OPTION(FSProfileFile)
- SET_OPTION(GCEmptyBlocks)
+ SET_OPTION(EnableGCEmptyBlocks)
#define SET_BOOLEAN_OPTION(Option) Opt.Option = Option;
@@ -1249,7 +1249,7 @@ void TargetPassConfig::addMachinePasses() {
addPass(createMachineOutlinerPass(EnableMachineOutliner));
}
- if (GCEmptyBlocks)
+ if (EnableGCEmptyBlocks)
addPass(llvm::createGCEmptyBasicBlocksLegacyPass());
if (EnableFSDiscriminator)
diff --git a/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll b/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll
index 84948b7ecf6e0..76671c4bad89a 100644
--- a/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll
+++ b/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll
@@ -1,5 +1,5 @@
-;; This test verifies that with -gc-empty-basic-blocks SHT_LLVM_BB_ADDR_MAP will not include entries for empty blocks.
-; RUN: llc < %s -mtriple=x86_64 -O0 -basic-block-address-map -gc-empty-basic-blocks | FileCheck --check-prefix=CHECK %s
+;; This test verifies that with -enable-gc-empty-basic-blocks SHT_LLVM_BB_ADDR_MAP will not include entries for empty blocks.
+; RUN: llc < %s -mtriple=x86_64 -O0 -basic-block-address-map -enable-gc-empty-basic-blocks | FileCheck --check-prefix=CHECK %s
define void @foo(i1 zeroext %0) nounwind {
br i1 %0, label %2, label %empty_block
diff --git a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll b/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
index 54ed34b2eae4e..3a0c5f10980ee 100644
--- a/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
+++ b/llvm/test/CodeGen/X86/gc-empty-basic-blocks.ll
@@ -1,6 +1,6 @@
-;; This test verifies that -gc-empty-basic-blocks removes regular empty blocks
-;; but does not remove empty blocks which have their address taken.
-; RUN: llc < %s -mtriple=x86_64 -O0 -gc-empty-basic-blocks | FileCheck %s
+;; This test verifies that -enable-gc-empty-basic-blocks removes regular empty
+;; blocks but does not remove empty blocks which have their address taken.
+; RUN: llc < %s -mtriple=x86_64 -O0 -enable-gc-empty-basic-blocks | FileCheck %s
;; This function has a regular empty block.
define void @foo(i1 zeroext %0) nounwind {
@@ -33,7 +33,7 @@ empty_block: ; preds = %1
}
;; This function has an empty block which has its address taken. Check that it
-;; is not removed by -gc-empty-basic-blocks.
+;; is not removed by -enable-gc-empty-basic-blocks.
define void @bar(i1 zeroext %0) nounwind {
entry:
%1 = select i1 %0, ptr blockaddress(@bar, %empty_block), ptr blockaddress(@bar, %bb2) ; <ptr> [#uses=1]
>From cf2dc632f1f8a68ef753f989001673085aaddd1c Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Wed, 14 Jan 2026 16:30:27 -0800
Subject: [PATCH 2/2] Add alias for staging
---
llvm/lib/CodeGen/TargetPassConfig.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index db0f692584fc1..29461f505356f 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -270,6 +270,13 @@ static cl::opt<bool> EnableGCEmptyBlocks(
"enable-gc-empty-basic-blocks", cl::init(false), cl::Hidden,
cl::desc("Enable garbage-collecting empty basic blocks"));
+// TODO: remove this once all downstream users have migrated to using
+// enable-gc-empty-basic-blocks.
+static cl::alias
+ EnableGCEmptyBlocksAlias("gc-empty-basic-blocks",
+ cl::desc("Alias for enable-gc-empty-basic-blocks"),
+ cl::aliasopt(EnableGCEmptyBlocks));
+
static cl::opt<bool>
SplitStaticData("split-static-data", cl::Hidden, cl::init(false),
cl::desc("Split static data sections into hot and cold "
More information about the llvm-commits
mailing list