Index: include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- include/clang/Basic/DiagnosticSemaKinds.td	(revision 95675)
+++ include/clang/Basic/DiagnosticSemaKinds.td	(working copy)
@@ -73,7 +73,9 @@ def ext_vla : Extension<
   "variable length arrays are a C99 feature, accepted as an extension">;
 def err_vla_cxx : Error<
   "variable length arrays are not permitted in C++">;
-  
+def warn_vla : Warning<"variable length array used">,
+  InGroup<DiagGroup<"vla">>, DefaultIgnore;
+
 def ext_anon_param_requires_type_specifier : Extension<
   "type specifier required for unnamed parameter, defaults to int">;
 def err_bad_variable_name : Error<
Index: lib/Sema/SemaType.cpp
===================================================================
--- lib/Sema/SemaType.cpp	(revision 95675)
+++ lib/Sema/SemaType.cpp	(working copy)
@@ -685,11 +685,14 @@ QualType Sema::BuildArrayType(QualType T
     }
     T = Context.getConstantArrayType(T, ConstVal, ASM, Quals);
   }
+  
+  bool IsVLA = ArraySize && !ArraySize->isTypeDependent() &&
+    !ArraySize->isValueDependent() &&
+    !ArraySize->isIntegerConstantExpr(Context);
+  
   // If this is not C99, extwarn about VLA's and C99 array size modifiers.
   if (!getLangOptions().C99) {
-    if (ArraySize && !ArraySize->isTypeDependent() &&
-        !ArraySize->isValueDependent() &&
-        !ArraySize->isIntegerConstantExpr(Context))
+    if (IsVLA)
       Diag(Loc, getLangOptions().CPlusPlus? diag::err_vla_cxx : diag::ext_vla);
     else if (ASM != ArrayType::Normal || Quals != 0)
       Diag(Loc, 
@@ -697,6 +700,9 @@ QualType Sema::BuildArrayType(QualType T
                                      : diag::ext_c99_array_usage);
   }
 
+  if (IsVLA)
+      Diag(Loc, diag::warn_vla);
+
   return T;
 }
 
Index: test/Sema/warn-vla.c
===================================================================
--- test/Sema/warn-vla.c	(revision 0)
+++ test/Sema/warn-vla.c	(revision 0)
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1 -Wvla -fsyntax-only -verify %s
+
+void t1(int n) {
+  int array[n]; // expected-warning{{variable length array used}}
+}
