Index: lib/Sema/SemaExpr.cpp
===================================================================
--- lib/Sema/SemaExpr.cpp	(revision 183970)
+++ lib/Sema/SemaExpr.cpp	(working copy)
@@ -2003,7 +2003,8 @@
       MightBeImplicitMember = true;
     else
       MightBeImplicitMember = isa<FieldDecl>(R.getFoundDecl()) ||
-                              isa<IndirectFieldDecl>(R.getFoundDecl());
+                              isa<IndirectFieldDecl>(R.getFoundDecl()) ||
+                              isa<MSPropertyDecl>(R.getFoundDecl());
 
     if (MightBeImplicitMember)
       return BuildPossibleImplicitMemberExpr(SS, TemplateKWLoc,
Index: test/SemaCXX/MicrosoftExtensions.cpp
===================================================================
--- test/SemaCXX/MicrosoftExtensions.cpp	(revision 183970)
+++ test/SemaCXX/MicrosoftExtensions.cpp	(working copy)
@@ -344,3 +344,17 @@
   int *i1;
   int &i2;  // expected-warning {{union member 'i2' has reference type 'int &', which is a Microsoft extension}}
 };
+
+// Property getter using reference
+struct SP11 {
+  __declspec(property(get=GetV)) int V;
+  int _v;
+  int& GetV() { return _v; }
+  void UseV() {
+    TakePtr(&V);
+    TakeRef(V);
+  }
+  void TakePtr(int *) {}
+  void TakeRef(int &) {}
+};
+
