diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-13 01:28:03 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-13 01:28:03 +0000 |
commit | 219cc61b505960195d538052f0e629b387ad60ca (patch) | |
tree | bc6683c0259415a4cc82178202ccc5f26ba44bc7 /lib/CodeGen/Mangle.cpp | |
parent | 03a2807021acd594add9d4ab5079cc740806b983 (diff) |
Add mangling for variadic functions and conversion functions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64425 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index a97ac58dd7..9ad98d787a 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -161,7 +161,9 @@ void CXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND) { break; case DeclarationName::CXXConversionFunctionName: - assert(false && "Not sure how to mangle conversion functions yet"); + // <operator-name> ::= cv <type> # (cast) + Out << "cv"; + mangleType(Context.getCanonicalType(Name.getCXXNameType())); break; case DeclarationName::CXXOperatorName: @@ -171,6 +173,7 @@ void CXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND) { case DeclarationName::CXXUsingDirective: assert(false && "Can't mangle a using directive name!"); + break; } } @@ -398,7 +401,6 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { // ::= d # double // ::= e # long double, __float80 // UNSUPPORTED: ::= g # __float128 - // NOT HERE: ::= z # ellipsis // UNSUPPORTED: ::= Dd # IEEE 754r decimal floating point (64 bits) // UNSUPPORTED: ::= De # IEEE 754r decimal floating point (128 bits) // UNSUPPORTED: ::= Df # IEEE 754r decimal floating point (32 bits) @@ -455,6 +457,10 @@ void CXXNameMangler::mangleBareFunctionType(const FunctionType *T, ArgEnd = Proto->arg_type_end(); Arg != ArgEnd; ++Arg) mangleType(*Arg); + + // <builtin-type> ::= z # ellipsis + if (Proto->isVariadic()) + Out << 'z'; } void CXXNameMangler::mangleType(const TagType *T) { |