decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.

* decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
	Instead, dig into the representation type to find the array bound.

From-SVN: r81393
This commit is contained in:
Zack Weinberg 2004-05-01 19:12:46 +00:00 committed by Zack Weinberg
parent ea2637ebba
commit f8e7a389e9
2 changed files with 23 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2004-05-01 Zack Weinberg <zack@codesourcery.com>
* decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
Instead, dig into the representation type to find the array bound.
2004-04-30 Jason Merrill <jason@redhat.com>
Refer to base members using COMPONENT_REFs where possible.
@ -23,7 +28,7 @@
* init.c (build_aggr_init): Fix accidental use of C99 construct in
previous change.
* class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
braced initializer.
* cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
@ -42,7 +47,7 @@
(class_initializer): Likewise.
(get_pseudo_ti_init): Likewise.
* typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
2004-04-22 Alan Modra <amodra@bigpond.net.au>
* name-lookup.c (anonymous_namespace_name): Make static.

View File

@ -4289,8 +4289,22 @@ reshape_init (tree type, tree *initp)
/* If the bound of the array is known, take no more initializers
than are allowed. */
max_index = ((TYPE_DOMAIN (type) && (TREE_CODE (type) == ARRAY_TYPE))
? array_type_nelts (type) : NULL_TREE);
max_index = NULL_TREE;
if (TREE_CODE (type) == ARRAY_TYPE)
{
if (TYPE_DOMAIN (type))
max_index = array_type_nelts (type);
}
else
{
/* For a vector, the representation type is a struct
containing a single member which is an array of the
appropriate size. */
tree rtype = TYPE_DEBUG_REPRESENTATION_TYPE (type);
if (rtype && TYPE_DOMAIN (TREE_TYPE (TYPE_FIELDS (rtype))))
max_index = array_type_nelts (TREE_TYPE (TYPE_FIELDS (rtype)));
}
/* Loop through the array elements, gathering initializers. */
for (index = size_zero_node;
*initp && (!max_index || !tree_int_cst_lt (max_index, index));