Merge pull request #71368 from bnbarham/std-optional-all-the-things

Migrate llvm::Optional to std::optional
This commit is contained in:
Ben Barham
2024-02-21 16:54:00 -08:00
committed by GitHub
810 changed files with 8035 additions and 8718 deletions

View File

@@ -104,7 +104,7 @@ void CompilerInvocation::setMainExecutablePath(StringRef Path) {
}
static std::string
getVersionedPrebuiltModulePath(llvm::Optional<llvm::VersionTuple> sdkVer,
getVersionedPrebuiltModulePath(std::optional<llvm::VersionTuple> sdkVer,
StringRef defaultPrebuiltPath) {
if (!sdkVer.has_value())
return defaultPrebuiltPath.str();
@@ -125,7 +125,7 @@ getVersionedPrebuiltModulePath(llvm::Optional<llvm::VersionTuple> sdkVer,
std::string CompilerInvocation::computePrebuiltCachePath(
StringRef RuntimeResourcePath, llvm::Triple target,
llvm::Optional<llvm::VersionTuple> sdkVer) {
std::optional<llvm::VersionTuple> sdkVer) {
SmallString<64> defaultPrebuiltPath{RuntimeResourcePath};
StringRef platform;
if (tripleIsMacCatalystEnvironment(target)) {
@@ -327,7 +327,7 @@ static bool ParseFrontendArgs(
return converter.convert(buffers);
}
static void diagnoseSwiftVersion(llvm::Optional<version::Version> &vers,
static void diagnoseSwiftVersion(std::optional<version::Version> &vers,
Arg *verArg, ArgList &Args,
DiagnosticEngine &diags) {
// General invalid version error
@@ -521,13 +521,13 @@ static void diagnoseCxxInteropCompatMode(Arg *verArg, ArgList &Args,
diags.diagnose(SourceLoc(), diag::valid_cxx_interop_modes, versStr);
}
static llvm::Optional<swift::StrictConcurrency>
static std::optional<swift::StrictConcurrency>
parseStrictConcurrency(StringRef value) {
return llvm::StringSwitch<llvm::Optional<swift::StrictConcurrency>>(value)
return llvm::StringSwitch<std::optional<swift::StrictConcurrency>>(value)
.Case("minimal", swift::StrictConcurrency::Minimal)
.Case("targeted", swift::StrictConcurrency::Targeted)
.Case("complete", swift::StrictConcurrency::Complete)
.Default(llvm::None);
.Default(std::nullopt);
}
static bool ParseCASArgs(CASOptions &Opts, ArgList &Args,
@@ -686,13 +686,12 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
"-warn-on-potentially-unavailable-enum-case");
if (const Arg *A = Args.getLastArg(OPT_unavailable_decl_optimization_EQ)) {
auto value =
llvm::StringSwitch<llvm::Optional<UnavailableDeclOptimization>>(
A->getValue())
.Case("none", UnavailableDeclOptimization::None)
.Case("stub", UnavailableDeclOptimization::Stub)
.Case("complete", UnavailableDeclOptimization::Complete)
.Default(llvm::None);
auto value = llvm::StringSwitch<std::optional<UnavailableDeclOptimization>>(
A->getValue())
.Case("none", UnavailableDeclOptimization::None)
.Case("stub", UnavailableDeclOptimization::Stub)
.Case("complete", UnavailableDeclOptimization::Complete)
.Default(std::nullopt);
if (value)
Opts.UnavailableDeclOptimizationMode = *value;
@@ -986,7 +985,7 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
} else if (diagLevel == "error") {
Opts.RequireExplicitAvailability = DiagnosticBehavior::Error;
} else if (diagLevel == "ignore") {
Opts.RequireExplicitAvailability = llvm::None;
Opts.RequireExplicitAvailability = std::nullopt;
} else {
Diags.diagnose(SourceLoc(),
diag::error_unknown_require_explicit_availability,
@@ -1066,14 +1065,14 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
if (Arg *A = Args.getLastArg(OPT_Raccess_note)) {
auto value =
llvm::StringSwitch<llvm::Optional<AccessNoteDiagnosticBehavior>>(
llvm::StringSwitch<std::optional<AccessNoteDiagnosticBehavior>>(
A->getValue())
.Case("none", AccessNoteDiagnosticBehavior::Ignore)
.Case("failures", AccessNoteDiagnosticBehavior::RemarkOnFailure)
.Case("all", AccessNoteDiagnosticBehavior::RemarkOnFailureOrSuccess)
.Case("all-validate",
AccessNoteDiagnosticBehavior::ErrorOnFailureRemarkOnSuccess)
.Default(llvm::None);
.Default(std::nullopt);
if (value)
Opts.AccessNoteBehavior = *value;
@@ -1232,10 +1231,10 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
// Parse OS version number arguments.
auto parseVersionArg =
[&](OptSpecifier opt) -> llvm::Optional<llvm::VersionTuple> {
[&](OptSpecifier opt) -> std::optional<llvm::VersionTuple> {
Arg *A = Args.getLastArg(opt);
if (!A)
return llvm::None;
return std::nullopt;
if (StringRef(A->getValue()) == "min")
return minimumAvailableOSVersionForTriple(Opts.Target);
@@ -1248,7 +1247,7 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
A->getAsString(Args), A->getValue());
return llvm::None;
return std::nullopt;
};
if (auto vers = parseVersionArg(OPT_min_inlining_target_version))
@@ -1433,10 +1432,10 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
}
if (auto A = Args.getLastArg(OPT_checked_async_objc_bridging)) {
auto value = llvm::StringSwitch<llvm::Optional<bool>>(A->getValue())
auto value = llvm::StringSwitch<std::optional<bool>>(A->getValue())
.Case("off", false)
.Case("on", true)
.Default(llvm::None);
.Default(std::nullopt);
if (value) {
Opts.UseCheckedAsyncObjCBridging = *value;
@@ -2193,24 +2192,24 @@ static bool ParseSILArgs(SILOptions &Opts, ArgList &Args,
// -Ounchecked might also set removal of runtime asserts (cond_fail).
Opts.RemoveRuntimeAsserts |= Args.hasArg(OPT_RemoveRuntimeAsserts);
llvm::Optional<DestroyHoistingOption> specifiedDestroyHoistingOption;
std::optional<DestroyHoistingOption> specifiedDestroyHoistingOption;
if (Arg *A = Args.getLastArg(OPT_enable_destroy_hoisting)) {
specifiedDestroyHoistingOption =
llvm::StringSwitch<llvm::Optional<DestroyHoistingOption>>(A->getValue())
llvm::StringSwitch<std::optional<DestroyHoistingOption>>(A->getValue())
.Case("true", DestroyHoistingOption::On)
.Case("false", DestroyHoistingOption::Off)
.Default(llvm::None);
.Default(std::nullopt);
}
llvm::Optional<CopyPropagationOption> specifiedCopyPropagationOption;
std::optional<CopyPropagationOption> specifiedCopyPropagationOption;
if (Arg *A = Args.getLastArg(OPT_copy_propagation_state_EQ)) {
specifiedCopyPropagationOption =
llvm::StringSwitch<llvm::Optional<CopyPropagationOption>>(A->getValue())
llvm::StringSwitch<std::optional<CopyPropagationOption>>(A->getValue())
.Case("true", CopyPropagationOption::On)
.Case("false", CopyPropagationOption::Off)
.Case("requested-passes-only",
CopyPropagationOption::RequestedPassesOnly)
.Default(llvm::None);
.Default(std::nullopt);
}
if (Args.hasArg(OPT_enable_copy_propagation)) {
if (specifiedCopyPropagationOption) {
@@ -2241,13 +2240,13 @@ static bool ParseSILArgs(SILOptions &Opts, ArgList &Args,
// Allow command line flags to override the default value of
// Opts.LexicalLifetimes. If no explicit flags are passed, then
// Opts.LexicalLifetimes retains its initial value.
llvm::Optional<bool> enableLexicalLifetimesFlag;
std::optional<bool> enableLexicalLifetimesFlag;
if (Arg *A = Args.getLastArg(OPT_enable_lexical_lifetimes)) {
enableLexicalLifetimesFlag =
llvm::StringSwitch<llvm::Optional<bool>>(A->getValue())
llvm::StringSwitch<std::optional<bool>>(A->getValue())
.Case("true", true)
.Case("false", false)
.Default(llvm::None);
.Default(std::nullopt);
}
if (Args.getLastArg(OPT_enable_lexical_lifetimes_noArg)) {
if (!enableLexicalLifetimesFlag.value_or(true)) {
@@ -2291,13 +2290,13 @@ static bool ParseSILArgs(SILOptions &Opts, ArgList &Args,
if (specifiedDestroyHoistingOption)
Opts.DestroyHoisting = *specifiedDestroyHoistingOption;
llvm::Optional<bool> enablePackMetadataStackPromotionFlag;
std::optional<bool> enablePackMetadataStackPromotionFlag;
if (Arg *A = Args.getLastArg(OPT_enable_pack_metadata_stack_promotion)) {
enablePackMetadataStackPromotionFlag =
llvm::StringSwitch<llvm::Optional<bool>>(A->getValue())
llvm::StringSwitch<std::optional<bool>>(A->getValue())
.Case("true", true)
.Case("false", false)
.Default(llvm::None);
.Default(std::nullopt);
}
if (Args.getLastArg(OPT_enable_pack_metadata_stack_promotion_noArg)) {
if (!enablePackMetadataStackPromotionFlag.value_or(true)) {
@@ -2699,12 +2698,12 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
if (Args.hasArg(OPT_use_jit)) {
Opts.UseJIT = true;
if (const Arg *A = Args.getLastArg(OPT_dump_jit)) {
llvm::Optional<swift::JITDebugArtifact> artifact =
llvm::StringSwitch<llvm::Optional<swift::JITDebugArtifact>>(
std::optional<swift::JITDebugArtifact> artifact =
llvm::StringSwitch<std::optional<swift::JITDebugArtifact>>(
A->getValue())
.Case("llvm-ir", JITDebugArtifact::LLVMIR)
.Case("object", JITDebugArtifact::Object)
.Default(llvm::None);
.Default(std::nullopt);
if (!artifact) {
Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
A->getOption().getName(), A->getValue());
@@ -2785,10 +2784,10 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
if (const Arg *A = Args.getLastArg(options::OPT_lto)) {
auto LLVMLTOKind =
llvm::StringSwitch<llvm::Optional<IRGenLLVMLTOKind>>(A->getValue())
llvm::StringSwitch<std::optional<IRGenLLVMLTOKind>>(A->getValue())
.Case("llvm-thin", IRGenLLVMLTOKind::Thin)
.Case("llvm-full", IRGenLLVMLTOKind::Full)
.Default(llvm::None);
.Default(std::nullopt);
if (LLVMLTOKind)
Opts.LLVMLTOKind = LLVMLTOKind.value();
else
@@ -2891,13 +2890,13 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
}
}
auto getRuntimeCompatVersion = [&]() -> llvm::Optional<llvm::VersionTuple> {
llvm::Optional<llvm::VersionTuple> runtimeCompatibilityVersion;
auto getRuntimeCompatVersion = [&]() -> std::optional<llvm::VersionTuple> {
std::optional<llvm::VersionTuple> runtimeCompatibilityVersion;
if (auto versionArg = Args.getLastArg(
options::OPT_runtime_compatibility_version)) {
auto version = StringRef(versionArg->getValue());
if (version.equals("none")) {
runtimeCompatibilityVersion = llvm::None;
runtimeCompatibilityVersion = std::nullopt;
} else if (version.equals("5.0")) {
runtimeCompatibilityVersion = llvm::VersionTuple(5, 0);
} else if (version.equals("5.1")) {