diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp
index a9d4615..af791f6 100644
--- a/lib/CodeGen/CodeGenTypes.cpp
+++ b/lib/CodeGen/CodeGenTypes.cpp
@@ -385,12 +385,19 @@
     return llvm::PointerType::get(PointeeType, FTy.getAddressSpace());
   }
 
-  case Type::MemberPointer:
-    // FIXME: Implement C++ pointer-to-member. The GCC representation is
-    // documented here:
-    // http://gcc.gnu.org/onlinedocs/gccint/Type-Layout.html#Type-Layout
-    assert(0 && "FIXME: We can't handle member pointers yet.");
-    return llvm::OpaqueType::get();
+  case Type::MemberPointer: {
+    // FIXME: This is ABI dependent. We use the Itanium C++ ABI.
+    // http://www.codesourcery.com/public/cxx-abi/abi.html#member-pointers
+    // If we ever want to support other ABIs this needs to be abstracted.
+
+    QualType ETy = cast<MemberPointerType>(Ty).getPointeeType();
+    if (ETy->isFunctionType()) {
+      return llvm::StructType::get(ConvertType(Context.getPointerDiffType()), 
+                                   ConvertType(Context.getPointerDiffType()),
+                                   NULL);
+    } else
+      return ConvertType(Context.getPointerDiffType());
+  }
 
   case Type::TemplateSpecialization:
     assert(false && "Dependent types can't get here");
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp
index c27ef4f..c09a13a 100644
--- a/lib/CodeGen/Mangle.cpp
+++ b/lib/CodeGen/Mangle.cpp
@@ -608,7 +608,12 @@
   //  <pointer-to-member-type> ::= M <class type> <member type>
   Out << 'M';
   mangleType(QualType(T->getClass(), 0));
-  mangleType(T->getPointeeType());
+  QualType PointeeType = T->getPointeeType();
+  if (const FunctionProtoType *FPT = dyn_cast<FunctionProtoType>(PointeeType)) {
+    mangleCVQualifiers(FPT->getTypeQuals());
+    mangleType(FPT);
+  } else 
+    mangleType(PointeeType);
 }
 
 void CXXNameMangler::mangleType(const TemplateTypeParmType *T) {
