diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index 8a8ad28..242d66f 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -521,7 +521,7 @@
     return;
   }
 
-  if (!isa<VarDecl>(d) && !isFunctionOrMethod(d)) {
+  if (!isa<VarDecl>(d) && !isa<ObjCIvarDecl>(d) && !isFunctionOrMethod(d)) {
     S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
       << Attr.getName() << 2 /*variable and function*/;
     return;
diff --git a/test/SemaObjC/unused.m b/test/SemaObjC/unused.m
index 7fdb801..e994188 100644
--- a/test/SemaObjC/unused.m
+++ b/test/SemaObjC/unused.m
@@ -7,19 +7,14 @@
 @end
 
 @implementation Greeter
-+ (void) hello {
-    printf("Hello, World!\n");
-}
++ (void) hello { printf("Hello, World!\n"); }
 @end
 
-
 int test1(void) {
   [Greeter hello];
   return 0;
 }
 
-
-
 @interface NSObject @end
 @interface NSString : NSObject 
 - (int)length;
@@ -29,10 +24,6 @@
   @"pointless example call for test purposes".length; // expected-warning {{property access result unused - getters should not have side effects}}
 }
 
-
-
-
-
 @interface foo
 - (int)meth: (int)x: (int)y: (int)z ;
 @end
@@ -42,3 +33,13 @@
 (int)y: // expected-warning{{unused}} 
 (int) __attribute__((unused))z { return x; }
 @end
+
+//===------------------------------------------------------------------------===
+// The next test shows how clang accepted attribute((unused)) on ObjC
+// instance variables, which GCC does not.
+//===------------------------------------------------------------------------===
+
+@interface TestUnusedIvar {
+  id x __attribute__((unused)); // no-warning
+}
+@end
