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.cpp36
1 files changed, 27 insertions, 9 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index ffb4f30..9293b91 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -3549,24 +3549,40 @@ void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts,
for (const std::string &F : Opts.NoSanitizeFiles)
GenerateArg(Consumer, OPT_fsanitize_ignorelist_EQ, F);
- if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver3_8)
+ switch (Opts.getClangABICompat()) {
+ case LangOptions::ClangABI::Ver3_8:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "3.8");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver4)
+ break;
+ case LangOptions::ClangABI::Ver4:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "4.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver6)
+ break;
+ case LangOptions::ClangABI::Ver6:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "6.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver7)
+ break;
+ case LangOptions::ClangABI::Ver7:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "7.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver9)
+ break;
+ case LangOptions::ClangABI::Ver9:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "9.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver11)
+ break;
+ case LangOptions::ClangABI::Ver11:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "11.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver12)
+ break;
+ case LangOptions::ClangABI::Ver12:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "12.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver14)
+ break;
+ case LangOptions::ClangABI::Ver14:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "14.0");
- else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver15)
+ break;
+ case LangOptions::ClangABI::Ver15:
GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "15.0");
+ break;
+ case LangOptions::ClangABI::Ver17:
+ GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "17.0");
+ break;
+ case LangOptions::ClangABI::Latest:
+ break;
+ }
if (Opts.getSignReturnAddressScope() ==
LangOptions::SignReturnAddressScopeKind::All)
@@ -4052,6 +4068,8 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.setClangABICompat(LangOptions::ClangABI::Ver14);
else if (Major <= 15)
Opts.setClangABICompat(LangOptions::ClangABI::Ver15);
+ else if (Major <= 17)
+ Opts.setClangABICompat(LangOptions::ClangABI::Ver17);
} else if (Ver != "latest") {
Diags.Report(diag::err_drv_invalid_value)
<< A->getAsString(Args) << A->getValue();