From 7883b028b42df7b763cae20d8ff56233bee4beb6 Mon Sep 17 00:00:00 2001 From: tcwzxx Date: Sun, 29 Sep 2024 11:43:28 +0800 Subject: [ItaniumMangle] Add substitutions for record types when mangling vtables (#109970) Fix #108015 The `mangleNameOrStandardSubstitution` function does not add the RD type into the substitution, which causes the mangling of the \ to be incorrect. Rename `mangleNameOrStandardSubstitution` to `mangleCXXRecordDecl` and add `Record` as a substitution --- clang/lib/Frontend/CompilerInvocation.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang/lib/Frontend/CompilerInvocation.cpp') diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6c09843..a0291cc 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -3830,6 +3830,9 @@ void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts, case LangOptions::ClangABI::Ver18: GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "18.0"); break; + case LangOptions::ClangABI::Ver19: + GenerateArg(Consumer, OPT_fclang_abi_compat_EQ, "19.0"); + break; case LangOptions::ClangABI::Latest: break; } @@ -4372,6 +4375,8 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, Opts.setClangABICompat(LangOptions::ClangABI::Ver17); else if (Major <= 18) Opts.setClangABICompat(LangOptions::ClangABI::Ver18); + else if (Major <= 19) + Opts.setClangABICompat(LangOptions::ClangABI::Ver19); } else if (Ver != "latest") { Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << A->getValue(); -- cgit v1.1