aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authortcwzxx <tcwzxx@gmail.com>2024-09-29 11:43:28 +0800
committerGitHub <noreply@github.com>2024-09-29 11:43:28 +0800
commit7883b028b42df7b763cae20d8ff56233bee4beb6 (patch)
tree93f9a2607f002c73e3c755620eebf128f61023e3 /clang/lib/Frontend/CompilerInvocation.cpp
parentb0fc36dfa42c420d38a9422e2c3092ca3ae84075 (diff)
downloadllvm-7883b028b42df7b763cae20d8ff56233bee4beb6.zip
llvm-7883b028b42df7b763cae20d8ff56233bee4beb6.tar.gz
llvm-7883b028b42df7b763cae20d8ff56233bee4beb6.tar.bz2
[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 \<base type\> to be incorrect. Rename `mangleNameOrStandardSubstitution` to `mangleCXXRecordDecl` and add `Record` as a substitution
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp5
1 files changed, 5 insertions, 0 deletions
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();