diff options
author | Reid Kleckner <rnk@google.com> | 2018-12-14 23:42:59 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-12-14 23:42:59 +0000 |
commit | f5f62908994de1da3633bbeedb316d1e7353ff02 (patch) | |
tree | c9c88ffb88159128cb16be7e2244302937ee1e5b /clang/lib/AST/ItaniumMangle.cpp | |
parent | d81b96ece8c42164c53d5e846f0916a6001d3b37 (diff) | |
download | bcm5719-llvm-f5f62908994de1da3633bbeedb316d1e7353ff02.tar.gz bcm5719-llvm-f5f62908994de1da3633bbeedb316d1e7353ff02.zip |
Mangle calling conventions into function pointer types where GCC does
Summary:
GCC 5.1 began mangling these Windows calling conventions into function
types, since they can be used for overloading. They've always been
mangled in the MS ABI, but they are new to the Itanium mangler. Note
that the calling convention doesn't appear as part of the main
declaration, it only appears on function parameter types and other
types.
Fixes PR39860
Reviewers: rjmccall, efriedma
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D55672
llvm-svn: 349212
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index d8d56216b11..8231ebe88bc 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2648,13 +2648,8 @@ StringRef CXXNameMangler::getCallingConvQualifierName(CallingConv CC) { case CC_C: return ""; - case CC_X86StdCall: - case CC_X86FastCall: - case CC_X86ThisCall: case CC_X86VectorCall: case CC_X86Pascal: - case CC_Win64: - case CC_X86_64SysV: case CC_X86RegCall: case CC_AAPCS: case CC_AAPCS_VFP: @@ -2667,6 +2662,16 @@ StringRef CXXNameMangler::getCallingConvQualifierName(CallingConv CC) { // FIXME: we should be mangling all of the above. return ""; + case CC_X86StdCall: + return "stdcall"; + case CC_X86FastCall: + return "fastcall"; + case CC_X86ThisCall: + return "thiscall"; + case CC_X86_64SysV: + return "sysv_abi"; + case CC_Win64: + return "ms_abi"; case CC_Swift: return "swiftcall"; } |