diff --git a/lib/CodeGen/MicrosoftCXXABI.cpp b/lib/CodeGen/MicrosoftCXXABI.cpp
index 960b1fe..1f3d788 100644
--- a/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -645,7 +645,7 @@
     //                          ::= Q # const pointer
     //                          ::= R # volatile pointer
     //                          ::= S # const volatile pointer
-    if (T->isPointerType()) {
+    if (T->isAnyPointerType() || T->isMemberPointerType()) {
       if (!Quals.hasVolatile()) {
         Out << 'Q';
       } else {
@@ -661,7 +661,7 @@
       // in there.
       mangleQualifiers(Quals, false);
   }
-  else if (T->isPointerType()) {
+  else if (T->isAnyPointerType() || T->isMemberPointerType()) {
     Out << 'P';
   }
   switch (T->getTypeClass()) {
@@ -1000,8 +1000,20 @@
   mangleType(ElementTy.getLocalUnqualifiedType());
 }
 
+// <type>                   ::= <pointer-to-member-type>
+// <pointer-to-member-type> ::= <pointer-cvr-qualifiers> <cvr-qualifiers>
+//                                                          <class name> <type>
 void MicrosoftCXXNameMangler::mangleType(const MemberPointerType *T) {
-  assert(false && "Don't know how to mangle MemberPointerTypes yet!");
+  QualType PointeeType = T->getPointeeType();
+  if (const FunctionProtoType *FPT = dyn_cast<FunctionProtoType>(PointeeType)) {
+    Out << '8';
+    mangleName(cast<RecordType>(T->getClass())->getDecl());
+    mangleType(FPT, NULL, false, true);
+  } else {
+    mangleQualifiers(PointeeType.getQualifiers(), true);
+    mangleName(cast<RecordType>(T->getClass())->getDecl());
+    mangleType(PointeeType.getLocalUnqualifiedType());
+  }
 }
 
 void MicrosoftCXXNameMangler::mangleType(const TemplateTypeParmType *T) {
diff --git a/test/CodeGenCXX/mangle-ms.cpp b/test/CodeGenCXX/mangle-ms.cpp
index e221410..6f1ac3e 100644
--- a/test/CodeGenCXX/mangle-ms.cpp
+++ b/test/CodeGenCXX/mangle-ms.cpp
@@ -10,6 +10,8 @@
 // CHECK: @"\01?h@@3QAHA"
 // CHECK: @"\01?i@@3PAY0BD@HA"
 // CHECK: @"\01?j@@3P6GHCE@ZA"
+// CHECK: @"\01?k@@3PTfoo@@DA"
+// CHECK: @"\01?l@@3P8foo@@AAHH@ZA"
 
 int a;
 
@@ -61,6 +63,10 @@
 
 int (__stdcall *j)(signed char, unsigned char);
 
+const volatile char foo::*k;
+
+int (foo::*l)(int);
+
 // Static functions are mangled, too.
 // Also make sure calling conventions, arglists, and throw specs work.
 static void __stdcall alpha(float a, double b) throw() {}
