diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index eb3c5df..4e8790b 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -399,7 +399,8 @@
     // Install the declarator into interfaceDecl.
     DeclTy *Field = Actions.ActOnIvar(CurScope,
                                        DS.getSourceRange().getBegin(),
-                                      FD.D, FD.BitfieldSize);
+                                      FD.D, FD.BitfieldSize, 
+                                      tok::objc_not_keyword);
     PropertyDecls.push_back(Field);
   }
   
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 3b352bf..1626f0d 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -243,7 +243,7 @@
   
   virtual DeclTy *ActOnIvar(Scope *S, SourceLocation DeclStart,
                             Declarator &D, ExprTy *BitfieldWidth,
-                            tok::ObjCKeywordKind visibility = tok::objc_not_keyword);
+                            tok::ObjCKeywordKind visibility);
 
   // This is used for both record definitions and ObjC interface declarations.
   virtual void ActOnFields(Scope* S,
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index a7f8bad..169a5f7 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -1426,9 +1426,8 @@
     InvalidDecl = true;
   }
   // FIXME: Chain fielddecls together.
-  FieldDecl *NewFD;
+  FieldDecl *NewFD = FieldDecl::Create(Context, Loc, II, T, BitWidth);
   
-  NewFD = FieldDecl::Create(Context, Loc, II, T, BitWidth);
   HandleDeclAttributes(NewFD, D.getDeclSpec().getAttributes(),
                        D.getAttributes());
 
@@ -1450,12 +1449,12 @@
   }
 }
 
-/// ActOnIvar - Each field of a struct/union/class is passed into this in order
-/// to create an IvarDecl object for it.
+/// ActOnIvar - Each ivar field of an objective-c class is passed into this 
+/// in order to create an IvarDecl object for it.
 Sema::DeclTy *Sema::ActOnIvar(Scope *S,
-                               SourceLocation DeclStart, 
-                               Declarator &D, ExprTy *BitfieldWidth,
-                              tok::ObjCKeywordKind visibility) {
+                              SourceLocation DeclStart, 
+                              Declarator &D, ExprTy *BitfieldWidth,
+                              tok::ObjCKeywordKind Visibility) {
   IdentifierInfo *II = D.getIdentifier();
   Expr *BitWidth = (Expr*)BitfieldWidth;
   SourceLocation Loc = DeclStart;
@@ -1491,9 +1490,7 @@
     InvalidDecl = true;
   }
   
-  ObjCIvarDecl *NewID;
-  
-  NewID = ObjCIvarDecl::Create(Context, Loc, II, T);
+  ObjCIvarDecl *NewID = ObjCIvarDecl::Create(Context, Loc, II, T);
   
   HandleDeclAttributes(NewID, D.getDeclSpec().getAttributes(),
                        D.getAttributes());
@@ -1501,8 +1498,8 @@
   if (D.getInvalidType() || InvalidDecl)
     NewID->setInvalidDecl();
   // If we have visibility info, make sure the AST is set accordingly.
-  if (visibility != tok::objc_not_keyword)
-    NewID ->setAccessControl(TranslateIvarVisibility(visibility));
+  if (Visibility != tok::objc_not_keyword)
+    NewID->setAccessControl(TranslateIvarVisibility(Visibility));
   return NewID;
 }
 
