diff options
author | Steve Ellcey <sje@cup.hp.com> | 2006-08-01 16:31:40 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2006-08-01 16:31:40 +0000 |
commit | f47165c975758bb03b5427a0a72273e535189883 (patch) | |
tree | 4cdddc7b7fbe172f68632f40ef0c73b2d4f5d9d0 | |
parent | 4fbbe6941cb824dc2defe3172263efac648ec27a (diff) | |
download | gcc-f47165c975758bb03b5427a0a72273e535189883.zip gcc-f47165c975758bb03b5427a0a72273e535189883.tar.gz gcc-f47165c975758bb03b5427a0a72273e535189883.tar.bz2 |
re PR c++/28256 (ICE with empty initializer)
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/brace2.C | 4 |
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 56c613b..8fe52a9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e9cf4b8..fe73942 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 261cadc..e1a69c1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/g++.dg/init/brace2.C b/gcc/testsuite/g++.dg/init/brace2.C index 5138430..2af063d 100644 --- a/gcc/testsuite/g++.dg/init/brace2.C +++ b/gcc/testsuite/g++.dg/init/brace2.C @@ -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" } |