From 1ce8e3543bba774e5200c73574420f1afd9d2fcd Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 9 Dec 2022 23:19:23 -0800 Subject: [Frontend] Use std::optional in CompilerInvocation.cpp (NFC) This is part of an effort to migrate from llvm::Optional to std::optional: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716 --- clang/lib/Frontend/CompilerInvocation.cpp | 68 ++++++++++++++++--------------- 1 file changed, 36 insertions(+), 32 deletions(-) (limited to 'clang/lib/Frontend/CompilerInvocation.cpp') diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 06a8815..ef3fc6c 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -98,6 +98,7 @@ #include #include #include +#include #include #include #include @@ -170,18 +171,19 @@ CompilerInvocationRefBase::~CompilerInvocationRefBase() = default; #include "clang/Driver/Options.inc" #undef SIMPLE_ENUM_VALUE_TABLE -static llvm::Optional normalizeSimpleFlag(OptSpecifier Opt, - unsigned TableIndex, - const ArgList &Args, - DiagnosticsEngine &Diags) { +static std::optional normalizeSimpleFlag(OptSpecifier Opt, + unsigned TableIndex, + const ArgList &Args, + DiagnosticsEngine &Diags) { if (Args.hasArg(Opt)) return true; return std::nullopt; } -static Optional normalizeSimpleNegativeFlag(OptSpecifier Opt, unsigned, - const ArgList &Args, - DiagnosticsEngine &) { +static std::optional normalizeSimpleNegativeFlag(OptSpecifier Opt, + unsigned, + const ArgList &Args, + DiagnosticsEngine &) { if (Args.hasArg(Opt)) return false; return std::nullopt; @@ -206,7 +208,7 @@ template (), bool> = false> static auto makeFlagToValueNormalizer(T Value) { return [Value](OptSpecifier Opt, unsigned, const ArgList &Args, - DiagnosticsEngine &) -> Optional { + DiagnosticsEngine &) -> std::optional { if (Args.hasArg(Opt)) return Value; return std::nullopt; @@ -221,9 +223,9 @@ static auto makeFlagToValueNormalizer(T Value) { static auto makeBooleanOptionNormalizer(bool Value, bool OtherValue, OptSpecifier OtherOpt) { - return [Value, OtherValue, OtherOpt](OptSpecifier Opt, unsigned, - const ArgList &Args, - DiagnosticsEngine &) -> Optional { + return [Value, OtherValue, + OtherOpt](OptSpecifier Opt, unsigned, const ArgList &Args, + DiagnosticsEngine &) -> std::optional { if (const Arg *A = Args.getLastArg(Opt, OtherOpt)) { return A->getOption().matches(Opt) ? Value : OtherValue; } @@ -270,7 +272,7 @@ denormalizeString(SmallVectorImpl &Args, const char *Spelling, denormalizeStringImpl(Args, Spelling, SA, OptClass, TableIndex, Twine(Value)); } -static Optional +static std::optional findValueTableByName(const SimpleEnumValueTable &Table, StringRef Name) { for (int I = 0, E = Table.Size; I != E; ++I) if (Name == Table.Table[I].Name) @@ -279,7 +281,7 @@ findValueTableByName(const SimpleEnumValueTable &Table, StringRef Name) { return std::nullopt; } -static Optional +static std::optional findValueTableByValue(const SimpleEnumValueTable &Table, unsigned Value) { for (int I = 0, E = Table.Size; I != E; ++I) if (Value == Table.Table[I].Value) @@ -288,10 +290,10 @@ findValueTableByValue(const SimpleEnumValueTable &Table, unsigned Value) { return std::nullopt; } -static llvm::Optional normalizeSimpleEnum(OptSpecifier Opt, - unsigned TableIndex, - const ArgList &Args, - DiagnosticsEngine &Diags) { +static std::optional normalizeSimpleEnum(OptSpecifier Opt, + unsigned TableIndex, + const ArgList &Args, + DiagnosticsEngine &Diags) { assert(TableIndex < SimpleEnumValueTablesSize); const SimpleEnumValueTable &Table = SimpleEnumValueTables[TableIndex]; @@ -334,9 +336,10 @@ static void denormalizeSimpleEnum(SmallVectorImpl &Args, static_cast(Value)); } -static Optional normalizeString(OptSpecifier Opt, int TableIndex, - const ArgList &Args, - DiagnosticsEngine &Diags) { +static std::optional normalizeString(OptSpecifier Opt, + int TableIndex, + const ArgList &Args, + DiagnosticsEngine &Diags) { auto *Arg = Args.getLastArg(Opt); if (!Arg) return std::nullopt; @@ -344,9 +347,9 @@ static Optional normalizeString(OptSpecifier Opt, int TableIndex, } template -static Optional normalizeStringIntegral(OptSpecifier Opt, int, - const ArgList &Args, - DiagnosticsEngine &Diags) { +static std::optional normalizeStringIntegral(OptSpecifier Opt, int, + const ArgList &Args, + DiagnosticsEngine &Diags) { auto *Arg = Args.getLastArg(Opt); if (!Arg) return std::nullopt; @@ -359,7 +362,7 @@ static Optional normalizeStringIntegral(OptSpecifier Opt, int, return Res; } -static Optional> +static std::optional> normalizeStringVector(OptSpecifier Opt, int, const ArgList &Args, DiagnosticsEngine &) { return Args.getAllArgValues(Opt); @@ -397,9 +400,10 @@ static void denormalizeStringVector(SmallVectorImpl &Args, } } -static Optional normalizeTriple(OptSpecifier Opt, int TableIndex, - const ArgList &Args, - DiagnosticsEngine &Diags) { +static std::optional normalizeTriple(OptSpecifier Opt, + int TableIndex, + const ArgList &Args, + DiagnosticsEngine &Diags) { auto *Arg = Args.getLastArg(Opt); if (!Arg) return std::nullopt; @@ -1065,7 +1069,7 @@ static void initOption(AnalyzerOptions::ConfigTable &Config, DiagnosticsEngine *Diags, bool &OptionField, StringRef Name, bool DefaultVal) { auto PossiblyInvalidVal = - llvm::StringSwitch>( + llvm::StringSwitch>( getStringOption(Config, Name, (DefaultVal ? "true" : "false"))) .Case("true", true) .Case("false", false) @@ -1362,7 +1366,7 @@ void CompilerInvocation::GenerateCodeGenArgs( else if (!Opts.DirectAccessExternalData && LangOpts->PICLevel == 0) GenerateArg(Args, OPT_fno_direct_access_external_data, SA); - Optional DebugInfoVal; + std::optional DebugInfoVal; switch (Opts.DebugInfo) { case codegenoptions::DebugLineTablesOnly: DebugInfoVal = "line-tables-only"; @@ -2368,7 +2372,7 @@ clang::CreateAndPopulateDiagOpts(ArrayRef Argv) { bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args, DiagnosticsEngine *Diags, bool DefaultDiagColor) { - Optional IgnoringDiags; + std::optional IgnoringDiags; if (!Diags) { IgnoringDiags.emplace(new DiagnosticIDs(), new DiagnosticOptions(), new IgnoringDiagConsumer()); @@ -2996,8 +3000,8 @@ static void GenerateHeaderSearchArgs(HeaderSearchOptions &Opts, auto Matches = [](const HeaderSearchOptions::Entry &Entry, llvm::ArrayRef Groups, - llvm::Optional IsFramework, - llvm::Optional IgnoreSysRoot) { + std::optional IsFramework, + std::optional IgnoreSysRoot) { return llvm::is_contained(Groups, Entry.Group) && (!IsFramework || (Entry.IsFramework == *IsFramework)) && (!IgnoreSysRoot || (Entry.IgnoreSysRoot == *IgnoreSysRoot)); -- cgit v1.1