Index: lib/Sema/SemaDecl.cpp
===================================================================
--- lib/Sema/SemaDecl.cpp	(revision 74831)
+++ lib/Sema/SemaDecl.cpp	(working copy)
@@ -3962,12 +3962,12 @@
       Diag(Loc, diag::warn_illegal_constant_array_size);
       T = FixedTy;
     } else {
+      // Do not unnecessarily invalidate declaration
+      // (the AST is well-formed anyway).
       if (SizeIsNegative)
         Diag(Loc, diag::err_typecheck_negative_array_size);
       else
         Diag(Loc, diag::err_typecheck_field_variable_size);
-      T = Context.IntTy;
-      InvalidDecl = true;
     }
   }
   
