[llvm-branch-commits] [llvm] [CommandLine] Make cl::boolOrDefault a scoped enum (PR #204553)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Jun 18 03:58:47 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Petar Avramovic (petar-avramovic)
<details>
<summary>Changes</summary>
Prevents implicit conversion to bool/int, where BOU_FALSE wrongly
evaluated as true. All uses qualified as cl::boolOrDefault::BOU_*.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@<!-- -->anthropic.com>
---
Patch is 35.18 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/204553.diff
30 Files Affected:
- (modified) bolt/lib/Rewrite/RewriteInstance.cpp (+4-3)
- (modified) llvm/include/llvm/Passes/CodeGenPassBuilder.h (+10-8)
- (modified) llvm/include/llvm/Support/CommandLine.h (+1-1)
- (modified) llvm/include/llvm/Target/CGPassBuilderOption.h (+6-6)
- (modified) llvm/lib/CodeGen/BranchFolding.cpp (+10-5)
- (modified) llvm/lib/CodeGen/GlobalMerge.cpp (+4-2)
- (modified) llvm/lib/CodeGen/MachineCopyPropagation.cpp (+3-3)
- (modified) llvm/lib/CodeGen/RegisterCoalescer.cpp (+3-3)
- (modified) llvm/lib/CodeGen/ShrinkWrap.cpp (+3-3)
- (modified) llvm/lib/CodeGen/TargetPassConfig.cpp (+15-13)
- (modified) llvm/lib/MC/MCAsmInfo.cpp (+3-3)
- (modified) llvm/lib/MC/MCAsmInfoXCOFF.cpp (+1-1)
- (modified) llvm/lib/Remarks/RemarkStreamer.cpp (+3-3)
- (modified) llvm/lib/Support/CommandLine.cpp (+10-1)
- (modified) llvm/lib/Support/WithColor.cpp (+4-3)
- (modified) llvm/lib/Target/AArch64/AArch64TargetMachine.cpp (+7-7)
- (modified) llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp (+2-1)
- (modified) llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp (+2-2)
- (modified) llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp (+4-2)
- (modified) llvm/lib/Target/ARM/ARMTargetMachine.cpp (+3-3)
- (modified) llvm/lib/Target/RISCV/RISCVTargetMachine.cpp (+2-2)
- (modified) llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp (+2-2)
- (modified) llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp (+3-3)
- (modified) llvm/lib/Transforms/Vectorize/LoopVectorize.cpp (+3-3)
- (modified) llvm/tools/llvm-cov/CodeCoverage.cpp (+5-5)
- (modified) llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp (+4-3)
- (modified) llvm/tools/llvm-readobj/ELFDumper.cpp (+3-2)
- (modified) llvm/tools/llvm-readobj/ObjDumper.h (+1-1)
- (modified) llvm/tools/llvm-readobj/llvm-readobj.cpp (+5-4)
- (modified) llvm/utils/yaml-bench/YAMLBench.cpp (+3-3)
``````````diff
diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp
index 6d8fd0b6e1099..0ceb42d61abb0 100644
--- a/bolt/lib/Rewrite/RewriteInstance.cpp
+++ b/bolt/lib/Rewrite/RewriteInstance.cpp
@@ -2284,15 +2284,16 @@ Error RewriteInstance::readSpecialSections() {
BC->printSections(BC->outs());
}
- if (opts::RelocationMode == cl::BOU_TRUE && !HasTextRelocations) {
+ if (opts::RelocationMode == cl::boolOrDefault::BOU_TRUE &&
+ !HasTextRelocations) {
BC->errs()
<< "BOLT-ERROR: relocations against code are missing from the input "
"file. Cannot proceed in relocations mode (-relocs).\n";
exit(1);
}
- BC->HasRelocations =
- HasTextRelocations && (opts::RelocationMode != cl::BOU_FALSE);
+ BC->HasRelocations = HasTextRelocations &&
+ (opts::RelocationMode != cl::boolOrDefault::BOU_FALSE);
if (BC->IsLinuxKernel && BC->HasRelocations) {
BC->outs() << "BOLT-INFO: disabling relocation mode for Linux kernel\n";
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 898aa7c9cf003..c4eec2300e693 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -194,9 +194,10 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
if (Opt.EnableGlobalISelAbort)
TM.Options.GlobalISelAbort = *Opt.EnableGlobalISelAbort;
- if (Opt.OptimizeRegAlloc == cl::BOU_UNSET)
- Opt.OptimizeRegAlloc =
- getOptLevel() != CodeGenOptLevel::None ? cl::BOU_TRUE : cl::BOU_FALSE;
+ if (Opt.OptimizeRegAlloc == cl::boolOrDefault::BOU_UNSET)
+ Opt.OptimizeRegAlloc = getOptLevel() != CodeGenOptLevel::None
+ ? cl::boolOrDefault::BOU_TRUE
+ : cl::boolOrDefault::BOU_FALSE;
}
Error buildPipeline(ModulePassManager &MPM, ModuleAnalysisManager &MAM,
@@ -876,17 +877,18 @@ template <typename Derived, typename TargetMachineT>
Error CodeGenPassBuilder<Derived, TargetMachineT>::addCoreISelPasses(
PassManagerWrapper &PMW) const {
// Enable FastISel with -fast-isel, but allow that to be overridden.
- TM.setO0WantsFastISel(Opt.EnableFastISelOption != cl::BOU_FALSE);
+ TM.setO0WantsFastISel(Opt.EnableFastISelOption !=
+ cl::boolOrDefault::BOU_FALSE);
// Determine an instruction selector.
enum class SelectorType { SelectionDAG, FastISel, GlobalISel };
SelectorType Selector;
- if (Opt.EnableFastISelOption == cl::BOU_TRUE)
+ if (Opt.EnableFastISelOption == cl::boolOrDefault::BOU_TRUE)
Selector = SelectorType::FastISel;
- else if (Opt.EnableGlobalISelOption == cl::BOU_TRUE ||
+ else if (Opt.EnableGlobalISelOption == cl::boolOrDefault::BOU_TRUE ||
(TM.Options.EnableGlobalISel &&
- Opt.EnableGlobalISelOption != cl::BOU_FALSE))
+ Opt.EnableGlobalISelOption != cl::boolOrDefault::BOU_FALSE))
Selector = SelectorType::GlobalISel;
else if (TM.getOptLevel() == CodeGenOptLevel::None && TM.getO0WantsFastISel())
Selector = SelectorType::FastISel;
@@ -988,7 +990,7 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::addMachinePasses(
// Run register allocation and passes that are tightly coupled with it,
// including phi elimination and scheduling.
- if (auto Err = Opt.OptimizeRegAlloc == cl::BOU_TRUE
+ if (auto Err = Opt.OptimizeRegAlloc == cl::boolOrDefault::BOU_TRUE
? derived().addOptimizedRegAlloc(PMW)
: derived().addFastRegAlloc(PMW))
return std::move(Err);
diff --git a/llvm/include/llvm/Support/CommandLine.h b/llvm/include/llvm/Support/CommandLine.h
index e1125042cd7d2..276c4cb90ef55 100644
--- a/llvm/include/llvm/Support/CommandLine.h
+++ b/llvm/include/llvm/Support/CommandLine.h
@@ -630,7 +630,7 @@ struct OptionValue final
};
// Other safe-to-copy-by-value common option types.
-enum boolOrDefault { BOU_UNSET, BOU_TRUE, BOU_FALSE };
+enum class boolOrDefault { BOU_UNSET, BOU_TRUE, BOU_FALSE };
template <>
struct LLVM_ABI OptionValue<cl::boolOrDefault> final
: OptionValueCopy<cl::boolOrDefault> {
diff --git a/llvm/include/llvm/Target/CGPassBuilderOption.h b/llvm/include/llvm/Target/CGPassBuilderOption.h
index 086142b7de574..f825cbdca439b 100644
--- a/llvm/include/llvm/Target/CGPassBuilderOption.h
+++ b/llvm/include/llvm/Target/CGPassBuilderOption.h
@@ -48,7 +48,7 @@ class RegAllocTypeParser : public cl::parser<RegAllocType> {
// Not one-on-one but mostly corresponding to commandline options in
// TargetPassConfig.cpp.
struct CGPassBuilderOption {
- cl::boolOrDefault OptimizeRegAlloc = cl::BOU_UNSET;
+ cl::boolOrDefault OptimizeRegAlloc = cl::boolOrDefault::BOU_UNSET;
std::optional<bool> EnableIPRA;
bool DebugPM = false;
bool DisableVerify = false;
@@ -84,11 +84,11 @@ struct CGPassBuilderOption {
std::string FSProfileFile;
std::string FSRemappingFile;
- cl::boolOrDefault VerifyMachineCode = cl::BOU_UNSET;
- cl::boolOrDefault EnableFastISelOption = cl::BOU_UNSET;
- cl::boolOrDefault EnableGlobalISelOption = cl::BOU_UNSET;
- cl::boolOrDefault DebugifyAndStripAll = cl::BOU_UNSET;
- cl::boolOrDefault DebugifyCheckAndStripAll = cl::BOU_UNSET;
+ cl::boolOrDefault VerifyMachineCode = cl::boolOrDefault::BOU_UNSET;
+ cl::boolOrDefault EnableFastISelOption = cl::boolOrDefault::BOU_UNSET;
+ cl::boolOrDefault EnableGlobalISelOption = cl::boolOrDefault::BOU_UNSET;
+ cl::boolOrDefault DebugifyAndStripAll = cl::boolOrDefault::BOU_UNSET;
+ cl::boolOrDefault DebugifyCheckAndStripAll = cl::boolOrDefault::BOU_UNSET;
};
LLVM_ABI CGPassBuilderOption getCGPassBuilderOption();
diff --git a/llvm/lib/CodeGen/BranchFolding.cpp b/llvm/lib/CodeGen/BranchFolding.cpp
index 4917c5b90821f..55f2dd430d6cb 100644
--- a/llvm/lib/CodeGen/BranchFolding.cpp
+++ b/llvm/lib/CodeGen/BranchFolding.cpp
@@ -74,8 +74,9 @@ STATISTIC(NumTailMerge , "Number of block tails merged");
STATISTIC(NumHoist , "Number of times common instructions are hoisted");
STATISTIC(NumTailCalls, "Number of tail calls optimized");
-static cl::opt<cl::boolOrDefault> FlagEnableTailMerge("enable-tail-merge",
- cl::init(cl::BOU_UNSET), cl::Hidden);
+static cl::opt<cl::boolOrDefault>
+ FlagEnableTailMerge("enable-tail-merge",
+ cl::init(cl::boolOrDefault::BOU_UNSET), cl::Hidden);
// Throttle for huge numbers of predecessors (compile speed problems)
static cl::opt<unsigned>
@@ -173,11 +174,15 @@ BranchFolder::BranchFolder(bool DefaultEnableTailMerge, bool CommonHoist,
: EnableHoistCommonCode(CommonHoist), MinCommonTailLength(MinTailLength),
MBBFreqInfo(FreqInfo), MBPI(ProbInfo), PSI(PSI) {
switch (FlagEnableTailMerge) {
- case cl::BOU_UNSET:
+ case cl::boolOrDefault::BOU_UNSET:
EnableTailMerge = DefaultEnableTailMerge;
break;
- case cl::BOU_TRUE: EnableTailMerge = true; break;
- case cl::BOU_FALSE: EnableTailMerge = false; break;
+ case cl::boolOrDefault::BOU_TRUE:
+ EnableTailMerge = true;
+ break;
+ case cl::boolOrDefault::BOU_FALSE:
+ EnableTailMerge = false;
+ break;
}
}
diff --git a/llvm/lib/CodeGen/GlobalMerge.cpp b/llvm/lib/CodeGen/GlobalMerge.cpp
index d52706b5f9bef..51e9e121def19 100644
--- a/llvm/lib/CodeGen/GlobalMerge.cpp
+++ b/llvm/lib/CodeGen/GlobalMerge.cpp
@@ -773,8 +773,10 @@ Pass *llvm::createGlobalMergePass(const TargetMachine *TM, unsigned Offset,
bool MergeExternalByDefault,
bool MergeConstantByDefault,
bool MergeConstAggressiveByDefault) {
- bool MergeExternal = (EnableGlobalMergeOnExternal == cl::BOU_UNSET) ?
- MergeExternalByDefault : (EnableGlobalMergeOnExternal == cl::BOU_TRUE);
+ bool MergeExternal =
+ (EnableGlobalMergeOnExternal == cl::boolOrDefault::BOU_UNSET)
+ ? MergeExternalByDefault
+ : (EnableGlobalMergeOnExternal == cl::boolOrDefault::BOU_TRUE);
bool MergeConstant = EnableGlobalMergeOnConst || MergeConstantByDefault;
bool MergeConstAggressive = GlobalMergeAllConst.getNumOccurrences() > 0
? GlobalMergeAllConst
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
index 54b2b2a0f4435..ad33cb71b7c56 100644
--- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp
+++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
@@ -1619,14 +1619,14 @@ MachineCopyPropagationPass::run(MachineFunction &MF,
bool MachineCopyPropagation::run(MachineFunction &MF) {
bool IsSpillageCopyElimEnabled = false;
switch (EnableSpillageCopyElimination) {
- case cl::BOU_UNSET:
+ case cl::boolOrDefault::BOU_UNSET:
IsSpillageCopyElimEnabled =
MF.getSubtarget().enableSpillageCopyElimination();
break;
- case cl::BOU_TRUE:
+ case cl::boolOrDefault::BOU_TRUE:
IsSpillageCopyElimEnabled = true;
break;
- case cl::BOU_FALSE:
+ case cl::boolOrDefault::BOU_FALSE:
IsSpillageCopyElimEnabled = false;
break;
}
diff --git a/llvm/lib/CodeGen/RegisterCoalescer.cpp b/llvm/lib/CodeGen/RegisterCoalescer.cpp
index eb43eddfa081e..4b4ba2144f964 100644
--- a/llvm/lib/CodeGen/RegisterCoalescer.cpp
+++ b/llvm/lib/CodeGen/RegisterCoalescer.cpp
@@ -92,7 +92,7 @@ static cl::opt<bool> EnableJoinSplits(
static cl::opt<cl::boolOrDefault> EnableGlobalCopies(
"join-globalcopies",
cl::desc("Coalesce copies that span blocks (default=subtarget)"),
- cl::init(cl::BOU_UNSET), cl::Hidden);
+ cl::init(cl::boolOrDefault::BOU_UNSET), cl::Hidden);
static cl::opt<bool> VerifyCoalescing(
"verify-coalescing",
@@ -4317,10 +4317,10 @@ bool RegisterCoalescer::run(MachineFunction &fn) {
const TargetSubtargetInfo &STI = fn.getSubtarget();
TRI = STI.getRegisterInfo();
TII = STI.getInstrInfo();
- if (EnableGlobalCopies == cl::BOU_UNSET)
+ if (EnableGlobalCopies == cl::boolOrDefault::BOU_UNSET)
JoinGlobalCopies = STI.enableJoinGlobalCopies();
else
- JoinGlobalCopies = (EnableGlobalCopies == cl::BOU_TRUE);
+ JoinGlobalCopies = (EnableGlobalCopies == cl::boolOrDefault::BOU_TRUE);
// If there are PHIs tracked by debug-info, they will need updating during
// coalescing. Build an index of those PHIs to ease updating.
diff --git a/llvm/lib/CodeGen/ShrinkWrap.cpp b/llvm/lib/CodeGen/ShrinkWrap.cpp
index 92d3c2e59fcec..355699a908a43 100644
--- a/llvm/lib/CodeGen/ShrinkWrap.cpp
+++ b/llvm/lib/CodeGen/ShrinkWrap.cpp
@@ -1034,7 +1034,7 @@ bool ShrinkWrapImpl::isShrinkWrapEnabled(const MachineFunction &MF) {
const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
switch (EnableShrinkWrapOpt) {
- case cl::BOU_UNSET:
+ case cl::boolOrDefault::BOU_UNSET:
return TFI->enableShrinkWrapping(MF) &&
// Windows with CFI has some limitations that make it impossible
// to use shrink-wrapping.
@@ -1051,9 +1051,9 @@ bool ShrinkWrapImpl::isShrinkWrapEnabled(const MachineFunction &MF) {
// If EnableShrinkWrap is set, it takes precedence on whatever the
// target sets. The rational is that we assume we want to test
// something related to shrink-wrapping.
- case cl::BOU_TRUE:
+ case cl::boolOrDefault::BOU_TRUE:
return true;
- case cl::BOU_FALSE:
+ case cl::boolOrDefault::BOU_FALSE:
return false;
}
llvm_unreachable("Invalid shrink-wrapping state");
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index 697b0a6447950..04f6a6d7e775e 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -802,9 +802,9 @@ void TargetPassConfig::addPrintPass(const std::string &Banner) {
}
void TargetPassConfig::addVerifyPass(const std::string &Banner) {
- bool Verify = VerifyMachineCode == cl::BOU_TRUE;
+ bool Verify = VerifyMachineCode == cl::boolOrDefault::BOU_TRUE;
#ifdef EXPENSIVE_CHECKS
- if (VerifyMachineCode == cl::BOU_UNSET)
+ if (VerifyMachineCode == cl::boolOrDefault::BOU_UNSET)
Verify = TM->isMachineVerifierClean();
#endif
if (Verify)
@@ -825,17 +825,17 @@ void TargetPassConfig::addCheckDebugPass() {
void TargetPassConfig::addMachinePrePasses(bool AllowDebugify) {
if (AllowDebugify && DebugifyIsSafe &&
- (DebugifyAndStripAll == cl::BOU_TRUE ||
- DebugifyCheckAndStripAll == cl::BOU_TRUE))
+ (DebugifyAndStripAll == cl::boolOrDefault::BOU_TRUE ||
+ DebugifyCheckAndStripAll == cl::boolOrDefault::BOU_TRUE))
addDebugifyPass();
}
void TargetPassConfig::addMachinePostPasses(const std::string &Banner) {
if (DebugifyIsSafe) {
- if (DebugifyCheckAndStripAll == cl::BOU_TRUE) {
+ if (DebugifyCheckAndStripAll == cl::boolOrDefault::BOU_TRUE) {
addCheckDebugPass();
addStripDebugPass();
- } else if (DebugifyAndStripAll == cl::BOU_TRUE)
+ } else if (DebugifyAndStripAll == cl::boolOrDefault::BOU_TRUE)
addStripDebugPass();
}
addVerifyPass(Banner);
@@ -994,17 +994,17 @@ void TargetPassConfig::addISelPrepare() {
bool TargetPassConfig::addCoreISelPasses() {
// Enable FastISel with -fast-isel, but allow that to be overridden.
- TM->setO0WantsFastISel(EnableFastISelOption != cl::BOU_FALSE);
+ TM->setO0WantsFastISel(EnableFastISelOption != cl::boolOrDefault::BOU_FALSE);
// Determine an instruction selector.
enum class SelectorType { SelectionDAG, FastISel, GlobalISel };
SelectorType Selector;
- if (EnableFastISelOption == cl::BOU_TRUE)
+ if (EnableFastISelOption == cl::boolOrDefault::BOU_TRUE)
Selector = SelectorType::FastISel;
- else if (EnableGlobalISelOption == cl::BOU_TRUE ||
+ else if (EnableGlobalISelOption == cl::boolOrDefault::BOU_TRUE ||
(TM->Options.EnableGlobalISel &&
- EnableGlobalISelOption != cl::BOU_FALSE))
+ EnableGlobalISelOption != cl::boolOrDefault::BOU_FALSE))
Selector = SelectorType::GlobalISel;
else if (TM->getOptLevel() == CodeGenOptLevel::None &&
TM->getO0WantsFastISel())
@@ -1368,10 +1368,12 @@ void TargetPassConfig::addMachineSSAOptimization() {
bool TargetPassConfig::getOptimizeRegAlloc() const {
switch (OptimizeRegAlloc) {
- case cl::BOU_UNSET:
+ case cl::boolOrDefault::BOU_UNSET:
return getOptLevel() != CodeGenOptLevel::None;
- case cl::BOU_TRUE: return true;
- case cl::BOU_FALSE: return false;
+ case cl::boolOrDefault::BOU_TRUE:
+ return true;
+ case cl::boolOrDefault::BOU_FALSE:
+ return false;
}
llvm_unreachable("Invalid optimize-regalloc state");
}
diff --git a/llvm/lib/MC/MCAsmInfo.cpp b/llvm/lib/MC/MCAsmInfo.cpp
index deb9aa5608c01..ff71de2b42866 100644
--- a/llvm/lib/MC/MCAsmInfo.cpp
+++ b/llvm/lib/MC/MCAsmInfo.cpp
@@ -38,14 +38,14 @@ cl::opt<cl::boolOrDefault> UseLEB128Directives(
"use-leb128-directives", cl::Hidden,
cl::desc(
"Disable the usage of LEB128 directives, and generate .byte instead."),
- cl::init(cl::BOU_UNSET));
+ cl::init(cl::boolOrDefault::BOU_UNSET));
}
MCAsmInfo::MCAsmInfo(const MCTargetOptions &Options) : TargetOptions(Options) {
if (DwarfExtendedLoc != Default)
SupportsExtendedDwarfLocDirective = DwarfExtendedLoc == Enable;
- if (UseLEB128Directives != cl::BOU_UNSET)
- HasLEB128Directives = UseLEB128Directives == cl::BOU_TRUE;
+ if (UseLEB128Directives != cl::boolOrDefault::BOU_UNSET)
+ HasLEB128Directives = UseLEB128Directives == cl::boolOrDefault::BOU_TRUE;
}
MCAsmInfo::~MCAsmInfo() = default;
diff --git a/llvm/lib/MC/MCAsmInfoXCOFF.cpp b/llvm/lib/MC/MCAsmInfoXCOFF.cpp
index 55aa517cd87fe..ddf4a28f619c1 100644
--- a/llvm/lib/MC/MCAsmInfoXCOFF.cpp
+++ b/llvm/lib/MC/MCAsmInfoXCOFF.cpp
@@ -27,7 +27,7 @@ MCAsmInfoXCOFF::MCAsmInfoXCOFF(const MCTargetOptions &Options)
InternalSymbolPrefix = "L..";
SupportsQuotedNames = false;
- if (UseLEB128Directives == cl::BOU_UNSET)
+ if (UseLEB128Directives == cl::boolOrDefault::BOU_UNSET)
HasLEB128Directives = false;
ZeroDirective = "\t.space\t";
AsciiDirective = nullptr; // not supported
diff --git a/llvm/lib/Remarks/RemarkStreamer.cpp b/llvm/lib/Remarks/RemarkStreamer.cpp
index 9911a2250d445..7ddebfbf0ccff 100644
--- a/llvm/lib/Remarks/RemarkStreamer.cpp
+++ b/llvm/lib/Remarks/RemarkStreamer.cpp
@@ -23,7 +23,7 @@ static cl::opt<cl::boolOrDefault> EnableRemarksSection(
cl::desc(
"Emit a section containing remark diagnostics metadata. By default, "
"this is enabled for the following formats: bitstream."),
- cl::init(cl::BOU_UNSET), cl::Hidden);
+ cl::init(cl::boolOrDefault::BOU_UNSET), cl::Hidden);
RemarkStreamer::RemarkStreamer(
std::unique_ptr<remarks::RemarkSerializer> RemarkSerializer,
@@ -58,11 +58,11 @@ bool RemarkStreamer::matchesFilter(StringRef Str) {
}
bool RemarkStreamer::needsSection() const {
- return EnableRemarksSection == cl::BOU_TRUE;
+ return EnableRemarksSection == cl::boolOrDefault::BOU_TRUE;
}
bool RemarkStreamer::wantsSection() const {
- if (EnableRemarksSection == cl::BOU_FALSE)
+ if (EnableRemarksSection == cl::boolOrDefault::BOU_FALSE)
return false;
// Enable remark sections by default for bitstream remarks (so dsymutil can
// find all remarks for a linked binary)
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index ba321bab5a910..30679bf046f23 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -2011,7 +2011,8 @@ bool parser<bool>::parse(Option &O, StringRef ArgName, StringRef Arg,
//
bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName, StringRef Arg,
boolOrDefault &Value) {
- return parseBool<boolOrDefault, BOU_TRUE, BOU_FALSE>(O, ArgName, Arg, Value);
+ return parseBool<boolOrDefault, boolOrDefault::BOU_TRUE,
+ boolOrDefault::BOU_FALSE>(O, ArgName, Arg, Value);
}
// parser<int> implementation
@@ -2229,6 +2230,14 @@ void generic_parser_base::printGenericOptionDiff(
// printOptionDiff - Specializations for printing basic value types.
//
+namespace llvm {
+namespace cl {
+static raw_ostream &operator<<(raw_ostream &OS, boolOrDefault V) {
+ return OS << static_cast<int>(V);
+}
+} // namespace cl
+} // namespace llvm
+
#define PRINT_OPT_DIFF(T) \
void parser<T>::printOptionDiff(const Option &O, T V, OptionValue<T> D, \
size_t GlobalWidth) const { \
diff --git a/llvm/lib/Support/WithColor.cpp b/llvm/lib/Support/WithColor.cpp
index abc9fb3e5d606..109238528e2a4 100644
--- a/llvm/lib/Support/WithColor.cpp
+++ b/llvm/lib/Support/WithColor.cpp
@@ -26,7 +26,7 @@ struct CreateUseColor {
return new cl::opt<cl::boolOrDefault>(
"color", cl::cat(getColorCategory()),
cl::desc("Use colors in output (default=autodetect)"),
- cl::init(cl::BOU_UNSET));
+ cl::init(cl::boolOrDefault::BOU_UNSET));
}
};
} // namespace
@@ -34,8 +34,9 @@ static ManagedStatic<cl::opt<cl::boolOrDefault>, CreateUseColor> UseColor;
void llvm::initWithColorOptions() { *UseColor; }
static bool DefaultAutoDetectFunction(const raw_ostream &OS) {
- return *UseColor == cl::BOU_UNSET ? OS.has_colors()
- : *UseColor == cl::BOU_TRUE;
+ return *UseColor == cl::boolOrDefault::BOU_UNSET
+ ? OS.has_colors()
+ : *UseColor == cl::boolOrDefault::BOU_TRUE;
}
WithColor::AutoDetectFunctionType WithColor::AutoDetectFunction =
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index a96ca792ac0b8..3ac32368fac81 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -284,8 +284,8 @@ LLVMInitializeAArch64Target() {
}
bool AArch64TargetMachine::isGlobalISelOptNone() const {
- const bool GlobalISelFlag =
- getCGPassBuilderOption().EnableGlobalISelOption == cl::BOU_TRUE;
+ const bool GlobalISelFlag = getCGPassBuilderOption().EnableGlobalISelOption ==
+ cl::boolOrDefault::BOU_TRUE;
return getOptLevel() == CodeGenOptLevel::None ||
(static_cast<unsigned>(getOptLevel()) >
@@ -397,8 +397,8 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, const Triple &TT,
...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/204553
More information about the llvm-branch-commits
mailing list