diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index fa3e492..43224bb 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/lib/CodeGen/CGExpr.cpp
@@ -697,6 +697,7 @@
   
   if (isa<ObjCIvarRefExpr>(E)) {
     LV.SetObjCIvar(LV, true);
+    LV.SetObjCIvarArray(LV, E->getType()->isArrayType());
     return;
   }
   if (const DeclRefExpr *Exp = dyn_cast<DeclRefExpr>(E)) {
@@ -714,10 +715,19 @@
     setObjCGCLValueClass(Ctx, Exp->getSubExpr(), LV);
   else if (const CStyleCastExpr *Exp = dyn_cast<CStyleCastExpr>(E))
     setObjCGCLValueClass(Ctx, Exp->getSubExpr(), LV);
-  else if (const ArraySubscriptExpr *Exp = dyn_cast<ArraySubscriptExpr>(E))
+  else if (const ArraySubscriptExpr *Exp = dyn_cast<ArraySubscriptExpr>(E)) {
     setObjCGCLValueClass(Ctx, Exp->getBase(), LV);
+    if (LV.isObjCIvar() && !LV.isObjCIvarArray()) {
+      // Using array syntax to assigning to what an ivar points to is not 
+      // same as assigning to the ivar itself. {id *Names;} Names[i] = 0;
+      LV.SetObjCIvar(LV, false); 
+    }
+  }
   else if (const MemberExpr *Exp = dyn_cast<MemberExpr>(E)) {
     setObjCGCLValueClass(Ctx, Exp->getBase(), LV);
+    // We don't know if member is an 'ivar', but this flag is looked at
+    // only in the context of LV.isObjCIvar().
+    LV.SetObjCIvarArray(LV, E->getType()->isArrayType());
   }
 }
 
diff --git a/lib/CodeGen/CGValue.h b/lib/CodeGen/CGValue.h
index fe97afa..af034a7 100644
--- a/lib/CodeGen/CGValue.h
+++ b/lib/CodeGen/CGValue.h
@@ -152,6 +152,9 @@
 
   // objective-c's ivar
   bool Ivar:1;
+  
+  // objective-c's ivar is an array
+  bool IvarArray:1;
 
   // LValue is non-gc'able for any reason, including being a parameter or local
   // variable.
@@ -173,7 +176,7 @@
     // FIXME: Convenient place to set objc flags to 0. This should really be
     // done in a user-defined constructor instead.
     R.ObjCType = None;
-    R.Ivar = R.NonGC = R.GlobalObjCRef = false;
+    R.Ivar = R.IvarArray = R.NonGC = R.GlobalObjCRef = false;
   }
 
 public:
@@ -192,6 +195,7 @@
   }
 
   bool isObjCIvar() const { return Ivar; }
+  bool isObjCIvarArray() const { return IvarArray; }
   bool isNonGC () const { return NonGC; }
   bool isGlobalObjCRef() const { return GlobalObjCRef; }
   bool isObjCWeak() const { return ObjCType == Weak; }
@@ -202,7 +206,9 @@
   static void SetObjCIvar(LValue& R, bool iValue) {
     R.Ivar = iValue;
   }
-
+  static void SetObjCIvarArray(LValue& R, bool iValue) {
+    R.IvarArray = iValue;
+  }
   static void SetGlobalObjCRef(LValue& R, bool iValue) {
     R.GlobalObjCRef = iValue;
   }
