diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index 60b52df..b2035ea 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -631,7 +631,8 @@
   " declared in a protocol">,
   InGroup<DiagGroup<"objc-protocol-property-synthesis">>;
 def warn_autosynthesis_property_ivar_match :Warning<
-  "auto autosynthesized property has same name as an existing ivar">,
+  "autosynthesized property %0 will use %select{|synthesized}1 instance variable "
+  "%2, not existing instance variable %3">,
   InGroup<DiagGroup<"objc-autosynthesis-property-ivar-name-match">>;
 def warn_missing_explicit_synthesis : Warning <
   "auto property synthesis is synthesizing property not explicitly synthesized">,
diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp
index 71112f7..95fbde3 100644
--- a/lib/Sema/SemaObjCProperty.cpp
+++ b/lib/Sema/SemaObjCProperty.cpp
@@ -753,24 +753,26 @@
           Context.getObjCGCQualType(PropertyIvarType, Qualifiers::Weak);
       }
     }
-
-    if (!Ivar) {
-      if (AtLoc.isInvalid()) {
-        // Check when default synthesizing a property that there is 
-        // an ivar matching property name and issue warning; since this
-        // is the most common case of not using an ivar used for backing
-        // property in non-default synthesis case.
-        ObjCInterfaceDecl *ClassDeclared=0;
-        ObjCIvarDecl *originalIvar = 
-          IDecl->lookupInstanceVariable(property->getIdentifier(), 
-                                        ClassDeclared);
-        if (originalIvar) {
-          Diag(PropertyDiagLoc, 
-               diag::warn_autosynthesis_property_ivar_match);
-          Diag(property->getLocation(), diag::note_property_declare);
-          Diag(originalIvar->getLocation(), diag::note_ivar_decl);
-        }
+    if (AtLoc.isInvalid()) {
+      // Check when default synthesizing a property that there is 
+      // an ivar matching property name and issue warning; since this
+      // is the most common case of not using an ivar used for backing
+      // property in non-default synthesis case.
+      ObjCInterfaceDecl *ClassDeclared=0;
+      ObjCIvarDecl *originalIvar = 
+      IDecl->lookupInstanceVariable(property->getIdentifier(), 
+                                    ClassDeclared);
+      if (originalIvar) {
+        Diag(PropertyDiagLoc, 
+             diag::warn_autosynthesis_property_ivar_match)
+        << property->getName() << (Ivar == 0) << PropertyIvar->getName() 
+        << originalIvar->getName();
+        Diag(property->getLocation(), diag::note_property_declare);
+        Diag(originalIvar->getLocation(), diag::note_ivar_decl);
       }
+    }
+    
+    if (!Ivar) {
       // In ARC, give the ivar a lifetime qualifier based on the
       // property attributes.
       if (getLangOpts().ObjCAutoRefCount &&
diff --git a/test/SemaObjC/default-synthesize-2.m b/test/SemaObjC/default-synthesize-2.m
index eeeab5f..ec298f5 100644
--- a/test/SemaObjC/default-synthesize-2.m
+++ b/test/SemaObjC/default-synthesize-2.m
@@ -47,7 +47,7 @@
 @end
 
 // rdar://11671080
-@implementation Test3 // expected-warning {{auto autosynthesized property has same name as an existing ivar}}
+@implementation Test3 // expected-warning {{autosynthesized property uid will use synthesized instance variable _uid, not existing instance variable uid}}
 // Oops, forgot to write @synthesize! will be default synthesized
 - (void) myMethod { 
    self.uid = 0; // Use of the “setter” 
@@ -115,3 +115,15 @@
 } 
 @end
 
+// rdar://11671080
+@interface Test8
+{
+  id _y;
+  id y; // expected-note {{ivar is declared here}}
+}
+@property(copy) id y; // expected-note {{property declared here}}
+@end
+
+
+@implementation Test8 @end // expected-warning {{autosynthesized property y will use  instance variable _y, not existing instance variable y}}
+
