Commit 07900878 by Paolo Carlini Committed by Paolo Carlini

re PR c++/16859 (Empty initializer for array of unknown size spuriously accepted)

2005-03-09  Paolo Carlini  <pcarlini@suse.de>

	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.

From-SVN: r96194
parent 5e91f7a3
2005-03-09 Paolo Carlini <pcarlini@suse.de>
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 <nathan@codesourcery.com> 2005-03-08 Nathan Sidwell <nathan@codesourcery.com>
PR c++/20186 PR c++/20186
......
...@@ -3924,9 +3924,7 @@ maybe_deduce_size_from_array_init (tree decl, tree init) ...@@ -3924,9 +3924,7 @@ maybe_deduce_size_from_array_init (tree decl, tree init)
DECL_EXTERNAL (decl) = 1; DECL_EXTERNAL (decl) = 1;
} }
if (pedantic && TYPE_DOMAIN (type) != NULL_TREE if (failure == 3)
&& tree_int_cst_lt (TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
integer_zero_node))
error ("zero-size array %qD", decl); error ("zero-size array %qD", decl);
layout_decl (decl, 0); layout_decl (decl, 0);
...@@ -5329,7 +5327,8 @@ expand_static_init (tree decl, tree init) ...@@ -5329,7 +5327,8 @@ expand_static_init (tree decl, tree init)
/* Make TYPE a complete type based on INITIAL_VALUE. /* Make TYPE a complete type based on INITIAL_VALUE.
Return 0 if successful, 1 if INITIAL_VALUE can't be deciphered, 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 int
complete_array_type (tree type, tree initial_value, int do_default) 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) ...@@ -5371,6 +5370,9 @@ complete_array_type (tree type, tree initial_value, int do_default)
else else
maxindex = size_binop (PLUS_EXPR, maxindex, ssize_int (1)); maxindex = size_binop (PLUS_EXPR, maxindex, ssize_int (1));
} }
if (pedantic && tree_int_cst_equal (maxindex, ssize_int (-1)))
value = 3;
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment