diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index d2a3441..9415673 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -2089,11 +2089,21 @@
       if (const DeclRefExpr *DE = dyn_cast<DeclRefExpr>(base)) {
         const NamedDecl *ND = DE->getDecl();
         if (!isa<ImplicitParamDecl>(ND)) {
+          // relax the rule such that it is allowed to have a shadow 'self'
+          // where stand-alone ivar can be found in this 'self' object. 
+          // This is to match gcc's behavior.
+          ObjCInterfaceDecl *selfIFace = 0;
+          if (const ObjCObjectPointerType *OPT =
+              base->getType()->getAsObjCInterfacePointerType())
+            selfIFace = OPT->getInterfaceDecl();
+          if (!selfIFace || 
+              !selfIFace->lookupInstanceVariable(IV->getIdentifier())) {
             Diag(Loc, diag::error_implicit_ivar_access)
             << IV->getDeclName();
             Diag(ND->getLocation(), diag::note_declared_at);
             return ExprError();
           }
+        }
       }
       return Owned(new (Context)
                    ObjCIvarRefExpr(IV, IV->getType(), Loc,
diff --git a/test/SemaObjC/self-declared-in-block.m b/test/SemaObjC/self-declared-in-block.m
index c820899..4bd7202 100644
--- a/test/SemaObjC/self-declared-in-block.m
+++ b/test/SemaObjC/self-declared-in-block.m
@@ -16,3 +16,36 @@
 
 @end
 
+
+// rdar://9284603
+@interface ShadowSelf
+{
+    int _anIvar;
+}
+@end
+
+@interface C {
+  int _cIvar;
+}
+@end
+
+@implementation ShadowSelf 
+- (void)doSomething {
+    __typeof(self) newSelf = self;
+    {
+        __typeof(self) self = newSelf;
+        (void)_anIvar;
+    }
+    {
+      C* self;	// expected-note {{declared here}}
+      (void) _anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}}
+    }
+}
+- (void)doAThing {
+    ^{
+        id self;	// expected-note {{declared here}}
+	(void)_anIvar; // expected-error {{instance variable '_anIvar' cannot be accessed because 'self' has been redeclared}}
+    }();
+}
+@end
+
