diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp
index 12e5d8c..62b4f5e 100644
--- a/lib/AST/DeclObjC.cpp
+++ b/lib/AST/DeclObjC.cpp
@@ -1352,15 +1352,19 @@
 }
 
 void ObjCProtocolDecl::collectPropertiesToImplement(PropertyMap &PM) const {
-  for (ObjCProtocolDecl::prop_iterator P = prop_begin(),
-      E = prop_end(); P != E; ++P) {
+  const ObjCProtocolDecl *PDecl = this;
+  if (!isThisDeclarationADefinition() && getDefinition())
+    PDecl = getDefinition();
+
+  for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
+       E = PDecl->prop_end(); P != E; ++P) {
     ObjCPropertyDecl *Prop = *P;
     // Insert into PM if not there already.
     PM.insert(std::make_pair(Prop->getIdentifier(), Prop));
   }
   // Scan through protocol's protocols.
-  for (ObjCProtocolDecl::protocol_iterator PI = protocol_begin(),
-      E = protocol_end(); PI != E; ++PI)
+  for (ObjCProtocolDecl::protocol_iterator PI = PDecl->protocol_begin(),
+      E = PDecl->protocol_end(); PI != E; ++PI)
     (*PI)->collectPropertiesToImplement(PM);
 }
 
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp
index 64b000e..d22d7a1 100644
--- a/lib/Sema/SemaDeclObjC.cpp
+++ b/lib/Sema/SemaDeclObjC.cpp
@@ -1593,6 +1593,11 @@
       NSIDecl = IDecl->lookupInheritedClass(&Context.Idents.get("NSProxy"));
   }
 
+  // If this is a forward protocol declaration, get its definition.
+  if (!PDecl->isThisDeclarationADefinition() &&
+      PDecl->getDefinition())
+    PDecl = PDecl->getDefinition();
+  
   // If a method lookup fails locally we still need to look and see if
   // the method was implemented by a base class or an inherited
   // protocol. This lookup is slow, but occurs rarely in correct code
diff --git a/test/SemaObjC/forward-protocol-incomplete-impl-warn.m b/test/SemaObjC/forward-protocol-incomplete-impl-warn.m
new file mode 100644
index 0000000..1010cd7
--- /dev/null
+++ b/test/SemaObjC/forward-protocol-incomplete-impl-warn.m
@@ -0,0 +1,21 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-default-synthesize-properties %s
+// rdar://12958878
+
+@interface NSObject @end
+
+@protocol DVTInvalidation
+- (void)invalidate;  // expected-note {{method 'invalidate' declared here}}
+@property int Prop; // expected-note {{property declared here}}
+@end
+
+
+
+@protocol DVTInvalidation;
+
+@interface IBImageCatalogDocument : NSObject <DVTInvalidation> // expected-note {{required for direct or indirect protocol 'DVTInvalidation'}}
+@end
+
+@implementation IBImageCatalogDocument // expected-warning {{auto property synthesis will not synthesize property declared in a protocol}} \ 
+				       // expected-warning {{incomplete implementation}} \
+				       // expected-warning {{method 'invalidate' in protocol not implemented}}
+@end
