--- gcc/c-decl.c.jj	2011-05-11 19:39:04.000000000 +0200
+++ gcc/c-decl.c	2011-05-23 14:23:58.000000000 +0200
@@ -3942,7 +3942,7 @@ start_decl (struct c_declarator *declara
     return 0;
 
   if (expr)
-    add_stmt (expr);
+    add_stmt (fold_convert (void_type_node, expr));
 
   if (TREE_CODE (decl) != FUNCTION_DECL && MAIN_NAME_P (DECL_NAME (decl)))
     warning (OPT_Wmain, "%q+D is usually a function", decl);
--- gcc/testsuite/gcc.dg/pr49120.c.jj	2011-05-23 14:28:53.000000000 +0200
+++ gcc/testsuite/gcc.dg/pr49120.c	2011-05-23 14:28:26.000000000 +0200
@@ -0,0 +1,11 @@
+/* PR c/49120 */
+/* { dg-do compile } */
+/* { dg-options "-Wall" } */
+
+int
+main ()
+{
+  int a = 1;
+  int c = ({ char b[a + 1]; b[0] = 0; b[0]; });
+  return c;
+}
