diff options
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 36 |
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(); |