From: paolo Date: Wed, 9 Mar 2005 17:03:34 +0000 (+0000) Subject: 2005-03-09 Paolo Carlini X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=983bd96f4b6f26eae4b5e7b0aeaf012ef8c03e71;p=thirdparty%2Fgcc.git 2005-03-09 Paolo Carlini PR c++/16859 * decl.c (complete_array_type): In pedantic mode, return 3 for an empty initializer list as the initializer for an array of unknown bound (8.5.1/4). (maybe_deduce_size_from_array_init): Fix final test to use the above. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96194 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8eec1963d463..7986946e3e29 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2005-03-09 Paolo Carlini + + PR c++/16859 + * decl.c (complete_array_type): In pedantic mode, return + 3 for an empty initializer list as the initializer for an + array of unknown bound (8.5.1/4). + (maybe_deduce_size_from_array_init): Fix final test to use + the above. + 2005-03-08 Nathan Sidwell PR c++/20186 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index fbb264e96406..c253028709a0 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3924,9 +3924,7 @@ maybe_deduce_size_from_array_init (tree decl, tree init) DECL_EXTERNAL (decl) = 1; } - if (pedantic && TYPE_DOMAIN (type) != NULL_TREE - && tree_int_cst_lt (TYPE_MAX_VALUE (TYPE_DOMAIN (type)), - integer_zero_node)) + if (failure == 3) error ("zero-size array %qD", decl); layout_decl (decl, 0); @@ -5329,7 +5327,8 @@ expand_static_init (tree decl, tree init) /* Make TYPE a complete type based on INITIAL_VALUE. Return 0 if successful, 1 if INITIAL_VALUE can't be deciphered, - 2 if there was no information (in which case assume 0 if DO_DEFAULT). */ + 2 if there was no information (in which case assume 0 if DO_DEFAULT), + 3 if the initializer list is empty (in pedantic mode). */ int complete_array_type (tree type, tree initial_value, int do_default) @@ -5371,6 +5370,9 @@ complete_array_type (tree type, tree initial_value, int do_default) else maxindex = size_binop (PLUS_EXPR, maxindex, ssize_int (1)); } + + if (pedantic && tree_int_cst_equal (maxindex, ssize_int (-1))) + value = 3; } else {