Frontend: Introduce the -unavailable-decl-optimization flag.

Part of rdar://106674022
This commit is contained in:
Allan Shortlidge
2023-03-09 19:01:24 -08:00
parent 5bb6f79847
commit 7d1d7a35bb
3 changed files with 41 additions and 0 deletions

View File

@@ -552,6 +552,20 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
Diags.diagnose(SourceLoc(), diag::warn_flag_deprecated,
"-check-api-availability-only");
if (const Arg *A = Args.getLastArg(OPT_unavailable_decl_optimization_EQ)) {
auto value =
llvm::StringSwitch<Optional<UnavailableDeclOptimization>>(A->getValue())
.Case("none", UnavailableDeclOptimization::None)
.Case("complete", UnavailableDeclOptimization::Complete)
.Default(None);
if (value)
Opts.UnavailableDeclOptimizationMode = *value;
else
Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
A->getAsString(Args), A->getValue());
}
Opts.WeakLinkAtTarget |= Args.hasArg(OPT_weak_link_at_target);
if (auto A = Args.getLastArg(OPT_enable_conformance_availability_errors,