diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp
index 047fecd..d8fc314 100644
--- a/lib/CodeGen/CGExprConstant.cpp
+++ b/lib/CodeGen/CGExprConstant.cpp
@@ -773,7 +773,27 @@
 }
 
 llvm::Constant *CodeGenModule::EmitNullConstant(QualType T) {
-  // Always return an LLVM null constant for now; this will change when we
-  // get support for IRGen of member pointers.
+  if (const ConstantArrayType *CAT = Context.getAsConstantArrayType(T)) {
+    
+    QualType ElementTy = CAT->getElementType();
+
+    // FIXME: Handle arrays of structs that contain member pointers.
+    if (Context.getBaseElementType(ElementTy)->isMemberPointerType()) {
+      llvm::Constant *Element = EmitNullConstant(ElementTy);
+      uint64_t NumElements = CAT->getSize().getZExtValue();
+      std::vector<llvm::Constant *> Array(NumElements);
+      for (uint64_t i = 0; i != NumElements; ++i)
+        Array[i] = Element;
+      
+      const llvm::ArrayType *ATy = 
+        cast<llvm::ArrayType>(getTypes().ConvertTypeForMem(T));
+      return llvm::ConstantArray::get(ATy, Array);
+    }
+  }
+  
+  // FIXME: Handle structs that contain member pointers.
+  if (T->isMemberPointerType()) 
+    return llvm::Constant::getAllOnesValue(getTypes().ConvertTypeForMem(T));
+  
   return llvm::Constant::getNullValue(getTypes().ConvertTypeForMem(T));
 }
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp
index 44f4c27..e761e9f 100644
--- a/lib/CodeGen/CGExprScalar.cpp
+++ b/lib/CodeGen/CGExprScalar.cpp
@@ -391,6 +391,14 @@
     return Builder.CreateFCmpUNE(Src, Zero, "tobool");
   }
   
+  if (SrcType->isMemberPointerType()) {
+    // FIXME: This is ABI specific.
+    
+    // Compare against -1.
+    llvm::Value *NegativeOne = llvm::Constant::getAllOnesValue(Src->getType());
+    return Builder.CreateICmpNE(Src, NegativeOne, "tobool");
+  }
+  
   assert((SrcType->isIntegerType() || isa<llvm::PointerType>(Src->getType())) &&
          "Unknown scalar type to convert");
   
diff --git a/lib/CodeGen/CodeGenFunction.cpp b/lib/CodeGen/CodeGenFunction.cpp
index 0b01259..6135f65 100644
--- a/lib/CodeGen/CodeGenFunction.cpp
+++ b/lib/CodeGen/CodeGenFunction.cpp
@@ -68,9 +68,9 @@
 bool CodeGenFunction::hasAggregateLLVMType(QualType T) {
   // FIXME: Use positive checks instead of negative ones to be more robust in
   // the face of extension.
-  return !T->hasPointerRepresentation() &&!T->isRealType() &&
+  return !T->hasPointerRepresentation() && !T->isRealType() &&
     !T->isVoidType() && !T->isVectorType() && !T->isFunctionType() && 
-    !T->isBlockPointerType();
+    !T->isBlockPointerType() && !T->isMemberPointerType();
 }
 
 void CodeGenFunction::EmitReturnBlock() {
