diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp
index 5376d0f..af79b66 100644
--- a/lib/CodeGen/CGObjC.cpp
+++ b/lib/CodeGen/CGObjC.cpp
@@ -16,6 +16,7 @@
 #include "CodeGenModule.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/DeclObjC.h"
+#include "clang/Basic/Diagnostic.h"
 #include "llvm/ADT/STLExtras.h"
 
 using namespace clang;
@@ -231,10 +232,10 @@
 RValue CodeGenFunction::EmitObjCPropertyGet(const ObjCPropertyRefExpr *E) {
   // Determine getter selector.
   Selector S;
-  if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(E->getDecl())) {
-    S = MD->getSelector();
+  if (E->getKind() == ObjCPropertyRefExpr::MethodRef) {
+    S = E->getGetterMethod()->getSelector();
   } else {
-    S = cast<ObjCPropertyDecl>(E->getDecl())->getGetterName();
+    S = E->getProperty()->getGetterName();
   }
 
   return CGM.getObjCRuntime().
@@ -246,12 +247,21 @@
 void CodeGenFunction::EmitObjCPropertySet(const ObjCPropertyRefExpr *E,
                                           RValue Src) {
   Selector S;
-  if (const ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(E->getDecl())) {
-    S = PD->getSetterName();
+  if (E->getKind() == ObjCPropertyRefExpr::MethodRef) {
+    ObjCMethodDecl *Setter = E->getSetterMethod(); 
+    
+    if (Setter) {
+      S = Setter->getSelector();
+    } else {
+      // FIXME: This should be diagnosed by sema.
+      SourceRange Range = E->getSourceRange();
+      CGM.getDiags().Report(getContext().getFullLoc(E->getLocStart()),
+                            diag::err_typecheck_assign_const, 0, 0,
+                            &Range, 1);
+      return;
+    }
   } else {
-    // FIXME: How can we have a method decl here?
-    ErrorUnsupported(E, "Objective-C property setter call");
-    return;
+    S = E->getProperty()->getSetterName();
   }
 
   CallArgList Args;
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 798c9d3..d1a1651 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -499,9 +499,8 @@
   ActualArgs.insert(ActualArgs.end(), CallArgs.begin(), CallArgs.end());
 
   // FIXME: This is a hack, we are implicitly coordinating with
-  // EmitCallExprExt, which will move the return type to the first
-  // parameter and set the structure return flag. See
-  // getMessageSendFn().
+  // EmitCall, which will move the return type to the first parameter
+  // and set the structure return flag. See getMessageSendFn().
                                                    
   const llvm::Type *ReturnTy = CGM.getTypes().ConvertType(ResultType);
   return CGF.EmitCall(ObjCTypes.getMessageSendFn(IsSuper, ReturnTy),
