Commit f8e7a389 by Zack Weinberg Committed by Zack Weinberg

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
parent ea2637eb
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> 2004-04-30 Jason Merrill <jason@redhat.com>
Refer to base members using COMPONENT_REFs where possible. Refer to base members using COMPONENT_REFs where possible.
...@@ -23,7 +28,7 @@ ...@@ -23,7 +28,7 @@
* init.c (build_aggr_init): Fix accidental use of C99 construct in * init.c (build_aggr_init): Fix accidental use of C99 construct in
previous change. previous change.
* class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
braced initializer. braced initializer.
* cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro. * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
...@@ -42,7 +47,7 @@ ...@@ -42,7 +47,7 @@
(class_initializer): Likewise. (class_initializer): Likewise.
(get_pseudo_ti_init): Likewise. (get_pseudo_ti_init): Likewise.
* typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P. * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
2004-04-22 Alan Modra <amodra@bigpond.net.au> 2004-04-22 Alan Modra <amodra@bigpond.net.au>
* name-lookup.c (anonymous_namespace_name): Make static. * name-lookup.c (anonymous_namespace_name): Make static.
......
...@@ -4289,8 +4289,22 @@ reshape_init (tree type, tree *initp) ...@@ -4289,8 +4289,22 @@ reshape_init (tree type, tree *initp)
/* If the bound of the array is known, take no more initializers /* If the bound of the array is known, take no more initializers
than are allowed. */ than are allowed. */
max_index = ((TYPE_DOMAIN (type) && (TREE_CODE (type) == ARRAY_TYPE)) max_index = NULL_TREE;
? array_type_nelts (type) : 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. */ /* Loop through the array elements, gathering initializers. */
for (index = size_zero_node; for (index = size_zero_node;
*initp && (!max_index || !tree_int_cst_lt (max_index, index)); *initp && (!max_index || !tree_int_cst_lt (max_index, index));
......
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