summaryrefslogtreecommitdiffstats
path: root/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AST/ItaniumMangle.cpp')
-rw-r--r--lib/AST/ItaniumMangle.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/AST/ItaniumMangle.cpp b/lib/AST/ItaniumMangle.cpp
index d8d56216b1..98c843db31 100644
--- a/lib/AST/ItaniumMangle.cpp
+++ b/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,22 @@ StringRef CXXNameMangler::getCallingConvQualifierName(CallingConv CC) {
// FIXME: we should be mangling all of the above.
return "";
+ case CC_X86ThisCall:
+ // FIXME: To match mingw GCC, thiscall should only be mangled in when it is
+ // used explicitly. At this point, we don't have that much information in
+ // the AST, since clang tends to bake the convention into the canonical
+ // function type. thiscall only rarely used explicitly, so don't mangle it
+ // for now.
+ return "";
+
+ case CC_X86StdCall:
+ return "stdcall";
+ case CC_X86FastCall:
+ return "fastcall";
+ case CC_X86_64SysV:
+ return "sysv_abi";
+ case CC_Win64:
+ return "ms_abi";
case CC_Swift:
return "swiftcall";
}