diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp
index 7e2a99f..9e803b7 100644
--- a/lib/AST/DeclObjC.cpp
+++ b/lib/AST/DeclObjC.cpp
@@ -345,7 +345,8 @@
   for (ObjCInterfaceDecl::ivar_iterator I = ivar_begin(),
        E = ivar_end(); I != E; ++I) {
     ObjCIvarDecl *IVDecl = (*I);
-    Fields.push_back(cast<FieldDecl>(IVDecl));
+    if (!IVDecl->isInvalidDecl())
+      Fields.push_back(cast<FieldDecl>(IVDecl));
   }
 }
   
@@ -390,7 +391,8 @@
   /// FIXME! Can do collection of ivars and adding to the record while
   /// doing it.
   for (unsigned int i = 0; i != RecFields.size(); i++) {
-    FieldDecl *Field =  FieldDecl::Create(Context, RD, SourceLocation(), 
+    FieldDecl *Field =  FieldDecl::Create(Context, RD, 
+                                          RecFields[i]->getLocation(), 
                                           RecFields[i]->getIdentifier(),
                                           RecFields[i]->getType(), 
                                           RecFields[i]->getBitWidth(), false, 0);
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 5e0edcd..0d48c62 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -3091,6 +3091,25 @@
     if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(EnclosingDecl)) {
       ID->addInstanceVariablesToClass(ClsFields, RecFields.size(), RBrac);
       ID->addRecordToClass(Context);
+      // Must enforce the rule that ivars in the base classes may not be
+      // duplicates.
+      FieldIDs.clear();
+      RecordDecl *RD = ID->getRecordForDecl();
+      for (RecordDecl::field_iterator i = RD->field_begin(),
+           e = RD->field_end(); i != e; ++i) {
+        FieldDecl *FD = *i;
+        if (IdentifierInfo *II = FD->getIdentifier())
+          if (!FieldIDs.insert(II)) {
+            Diag(FD->getLocation(), diag::err_duplicate_member) << II;
+            FD->setInvalidDecl();
+            for (RecordDecl::field_iterator j = RD->field_begin(),
+                 e1 = RD->field_end(); j != e1; ++j)
+              if (II == (*j)->getIdentifier()) {
+                Diag((*j)->getLocation(), diag::note_previous_definition);
+                break;
+              }
+          }
+      }
     }
     else if (ObjCImplementationDecl *IMPDecl = 
                dyn_cast<ObjCImplementationDecl>(EnclosingDecl)) {
