Add Microsoft mangling of constructors and destructors. Patch by Dmitry!
llvm-svn: 145581
This commit is contained in:
parent
d3b986df5d
commit
0567b8ec58
|
@ -335,10 +335,12 @@ MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
|
|||
llvm_unreachable("Can't mangle Objective-C selector names here!");
|
||||
|
||||
case DeclarationName::CXXConstructorName:
|
||||
llvm_unreachable("Can't mangle constructors yet!");
|
||||
Out << "?0";
|
||||
break;
|
||||
|
||||
case DeclarationName::CXXDestructorName:
|
||||
llvm_unreachable("Can't mangle destructors yet!");
|
||||
Out << "?1";
|
||||
break;
|
||||
|
||||
case DeclarationName::CXXConversionFunctionName:
|
||||
// <operator-name> ::= ?B # (cast)
|
||||
|
@ -1168,13 +1170,15 @@ void MicrosoftMangleContext::mangleCXXRTTIName(QualType T,
|
|||
}
|
||||
void MicrosoftMangleContext::mangleCXXCtor(const CXXConstructorDecl *D,
|
||||
CXXCtorType Type,
|
||||
raw_ostream &) {
|
||||
llvm_unreachable("Can't yet mangle constructors!");
|
||||
raw_ostream & Out) {
|
||||
MicrosoftCXXNameMangler mangler(*this, Out);
|
||||
mangler.mangle(D);
|
||||
}
|
||||
void MicrosoftMangleContext::mangleCXXDtor(const CXXDestructorDecl *D,
|
||||
CXXDtorType Type,
|
||||
raw_ostream &) {
|
||||
llvm_unreachable("Can't yet mangle destructors!");
|
||||
raw_ostream & Out) {
|
||||
MicrosoftCXXNameMangler mangler(*this, Out);
|
||||
mangler.mangle(D);
|
||||
}
|
||||
void MicrosoftMangleContext::mangleReferenceTemporary(const clang::VarDecl *,
|
||||
raw_ostream &) {
|
||||
|
|
|
@ -28,7 +28,18 @@ protected:
|
|||
public:
|
||||
static const volatile char f;
|
||||
int operator+(int a);
|
||||
};
|
||||
foo(){}
|
||||
//CHECK: @"\01??0foo@@QAE@XZ"
|
||||
|
||||
~foo(){}
|
||||
//CHECK: @"\01??1foo@@QAE@XZ"
|
||||
|
||||
foo(int i){}
|
||||
//CHECK: @"\01??0foo@@QAE@H@Z"
|
||||
|
||||
foo(char *q){}
|
||||
//CHECK: @"\01??0foo@@QAE@PAD@Z"
|
||||
}f,s1(1),s2((char*)0);
|
||||
|
||||
struct bar {
|
||||
static int g;
|
||||
|
|
Loading…
Reference in New Issue