aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 6fc8afc..61a2c07 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1734,25 +1734,24 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
StringRef ArgStr =
Args.hasArg(OPT_iterface_stub_version_EQ)
? Args.getLastArgValue(OPT_iterface_stub_version_EQ)
- : "experimental-ifs-v1";
- if (ArgStr == "experimental-yaml-elf-v1" ||
- ArgStr == "experimental-tapi-elf-v1") {
+ : "";
+ llvm::Optional<frontend::ActionKind> ProgramAction =
+ llvm::StringSwitch<llvm::Optional<frontend::ActionKind>>(ArgStr)
+ .Case("experimental-ifs-v1", frontend::GenerateInterfaceIfsExpV1)
+ .Default(llvm::None);
+ if (!ProgramAction) {
std::string ErrorMessage =
"Invalid interface stub format: " + ArgStr.str() +
- " is deprecated.";
- Diags.Report(diag::err_drv_invalid_value)
- << "Must specify a valid interface stub format type, ie: "
- "-interface-stub-version=experimental-ifs-v1"
- << ErrorMessage;
- } else if (ArgStr != "experimental-ifs-v1") {
- std::string ErrorMessage =
- "Invalid interface stub format: " + ArgStr.str() + ".";
+ ((ArgStr == "experimental-yaml-elf-v1" ||
+ ArgStr == "experimental-tapi-elf-v1")
+ ? " is deprecated."
+ : ".");
Diags.Report(diag::err_drv_invalid_value)
<< "Must specify a valid interface stub format type, ie: "
"-interface-stub-version=experimental-ifs-v1"
<< ErrorMessage;
} else {
- Opts.ProgramAction = frontend::GenerateInterfaceIfsExpV1;
+ Opts.ProgramAction = *ProgramAction;
}
break;
}