RequirementMachine: Add -requirement-machine-protocol-signatures= flag

There are three settings, on, off and verify. Not hooked up quite yet.
This commit is contained in:
Slava Pestov
2021-10-06 21:22:19 -04:00
parent a4c2ad43ab
commit 0e21d85325
3 changed files with 28 additions and 6 deletions

View File

@@ -831,13 +831,12 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
}
}
if (auto A =
Args.getLastArg(OPT_requirement_machine_EQ)) {
if (auto A = Args.getLastArg(OPT_requirement_machine_EQ)) {
auto value = llvm::StringSwitch<Optional<RequirementMachineMode>>(A->getValue())
.Case("off", RequirementMachineMode::Disabled)
.Case("on", RequirementMachineMode::Enabled)
.Case("verify", RequirementMachineMode::Verify)
.Default(None);
.Case("off", RequirementMachineMode::Disabled)
.Case("on", RequirementMachineMode::Enabled)
.Case("verify", RequirementMachineMode::Verify)
.Default(None);
if (value)
Opts.EnableRequirementMachine = *value;
@@ -846,6 +845,20 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
A->getAsString(Args), A->getValue());
}
if (auto A = Args.getLastArg(OPT_requirement_machine_protocol_signatures_EQ)) {
auto value = llvm::StringSwitch<Optional<RequirementMachineMode>>(A->getValue())
.Case("off", RequirementMachineMode::Disabled)
.Case("on", RequirementMachineMode::Enabled)
.Case("verify", RequirementMachineMode::Verify)
.Default(None);
if (value)
Opts.RequirementMachineProtocolSignatures = *value;
else
Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
A->getAsString(Args), A->getValue());
}
Opts.DumpRequirementMachine = Args.hasArg(
OPT_dump_requirement_machine);
Opts.AnalyzeRequirementMachine = Args.hasArg(