llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-binary-utilities 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 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
