re PR c++/28256 (ICE with empty initializer)
authorSteve Ellcey <sje@cup.hp.com>
Tue, 1 Aug 2006 16:31:40 +0000 (16:31 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Tue, 1 Aug 2006 16:31:40 +0000 (16:31 +0000)
PR c++/28256
* decl.c (check_initializer): Check for 1 initializer on scalar types.
* g++.dg/init/brace2.C: Change expected error message, add empty init.

From-SVN: r115856

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/init/brace2.C

index 56c613b0aefb7f03625fa7889052db5b048b0ad1..8fe52a90c0f0d5fd3bc418380221a3ac8725dc59 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-01  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28256
+       * decl.c (check_initializer): Check for 1 initializer on scalar types.
+
 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
 
        PR debug/23336
index e9cf4b83022ea7aaf516d672fe901b7873cd1b3e..fe73942e9bd5841b5f7b8d225d9ea5afbf0d3f9d 100644 (file)
@@ -4730,6 +4730,14 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup)
       TREE_TYPE (decl) = error_mark_node;
       init = NULL_TREE;
     }
+  else if (!CP_AGGREGATE_TYPE_P (type)
+          && init && BRACE_ENCLOSED_INITIALIZER_P (init)
+          && VEC_length (constructor_elt, CONSTRUCTOR_ELTS (init)) != 1)
+    {
+      error ("scalar object %qD requires one element in initializer", decl);
+      TREE_TYPE (decl) = error_mark_node;
+      init = NULL_TREE;
+    }
 
   if (TREE_CODE (decl) == CONST_DECL)
     {
index 261cadc8ae228b95c3da3e3488b208aa35382b52..e1a69c1dd9ad21e3e06610bb021592237e7905f6 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-01  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28256
+       * g++.dg/init/brace2.C: Change expected error message, add empty init.
+
 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
 
        PR debug/23336
index 5138430e5cb1b41b051543dae4ed314e830eff1a..2af063d5f5668e165bb550a31be90de8850317b7 100644 (file)
@@ -3,6 +3,6 @@
 int x = { 2 };
 const char * y = { "hello" };
 int a = 2;
-int b = { 2,3 }; // { dg-error "too many initializers" }
+int b = { 2,3 }; // { dg-error "requires one element in initializer" }
 int c = { { 2 } } ; // { dg-error "braces around scalar initializer" }
-
+int d = {}; // { dg-error "requires one element in initializer" }