diff options
author | Richard Smith <richard@metafoo.co.uk> | 2021-05-05 18:56:58 -0700 |
---|---|---|
committer | Richard Smith <richard@metafoo.co.uk> | 2021-05-11 17:35:33 -0700 |
commit | 697ac15a0fc71888c372667bdbc5583ab42d4695 (patch) | |
tree | 39a30e6c24acf21765cd18ba7976e8b3e0df9d1c /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 6f5ddf67319b50664f3f5a4001723454696594b4 (diff) | |
download | llvm-697ac15a0fc71888c372667bdbc5583ab42d4695.zip llvm-697ac15a0fc71888c372667bdbc5583ab42d4695.tar.gz llvm-697ac15a0fc71888c372667bdbc5583ab42d4695.tar.bz2 |
Fix bad mangling of <data-member-prefix> for a closure in the initializer of a variable at global namespace scope.
This implements the direction proposed in
https://github.com/itanium-cxx-abi/cxx-abi/pull/126.
Differential Revision: https://reviews.llvm.org/D101968
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 0c5066a..e8e0e2d 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -3509,6 +3509,8 @@ void CompilerInvocation::GenerateLangArgs(const LangOptions &Opts, GenerateArg(Args, OPT_fclang_abi_compat_EQ, "9.0", SA); else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver11) GenerateArg(Args, OPT_fclang_abi_compat_EQ, "11.0", SA); + else if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver12) + GenerateArg(Args, OPT_fclang_abi_compat_EQ, "12.0", SA); if (Opts.getSignReturnAddressScope() == LangOptions::SignReturnAddressScopeKind::All) @@ -3970,6 +3972,8 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, Opts.setClangABICompat(LangOptions::ClangABI::Ver9); else if (Major <= 11) Opts.setClangABICompat(LangOptions::ClangABI::Ver11); + else if (Major <= 12) + Opts.setClangABICompat(LangOptions::ClangABI::Ver12); } else if (Ver != "latest") { Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << A->getValue(); |