Commit 6ab5c740 by Nathan Sidwell Committed by Nathan Sidwell

decl.c (complete_array_type): Allocate off same obstack.

	* decl.c (complete_array_type): Allocate off same obstack. Fix
	DO_DEFAULT comment to match reality.
	* friend.c (make_friend_class): Fix diagnostic typo.

From-SVN: r27210
parent 9cb15ab6
1999-05-28 Nathan Sidwell <nathan@acm.org>
* decl.c (complete_array_type): Allocate off same obstack. Fix
DO_DEFAULT comment to match reality.
* friend.c (make_friend_class): Fix diagnostic typo.
1999-05-28 Mark Mitchell <mark@codesourcery.com> 1999-05-28 Mark Mitchell <mark@codesourcery.com>
* decl.c (lookup_namespace_name): Handle getting a * decl.c (lookup_namespace_name): Handle getting a
......
...@@ -8558,7 +8558,7 @@ expand_static_init (decl, init) ...@@ -8558,7 +8558,7 @@ expand_static_init (decl, 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 1 if DO_DEFAULT). */ 2 if there was no information (in which case assume 0 if DO_DEFAULT). */
int int
complete_array_type (type, initial_value, do_default) complete_array_type (type, initial_value, do_default)
...@@ -8567,7 +8567,10 @@ complete_array_type (type, initial_value, do_default) ...@@ -8567,7 +8567,10 @@ complete_array_type (type, initial_value, do_default)
{ {
register tree maxindex = NULL_TREE; register tree maxindex = NULL_TREE;
int value = 0; int value = 0;
/* Allocate on the same obstack as TYPE. */
push_obstacks (TYPE_OBSTACK (type), TYPE_OBSTACK (type));
if (initial_value) if (initial_value)
{ {
/* Note MAXINDEX is really the maximum index, /* Note MAXINDEX is really the maximum index,
...@@ -8615,23 +8618,28 @@ complete_array_type (type, initial_value, do_default) ...@@ -8615,23 +8618,28 @@ complete_array_type (type, initial_value, do_default)
if (maxindex) if (maxindex)
{ {
tree itype; tree itype;
tree domain;
domain = build_index_type (maxindex);
TYPE_DOMAIN (type) = domain;
TYPE_DOMAIN (type) = build_index_type (maxindex);
if (! TREE_TYPE (maxindex)) if (! TREE_TYPE (maxindex))
TREE_TYPE (maxindex) = TYPE_DOMAIN (type); TREE_TYPE (maxindex) = domain;
if (initial_value) if (initial_value)
itype = TREE_TYPE (initial_value); itype = TREE_TYPE (initial_value);
else else
itype = NULL; itype = NULL;
if (itype && !TYPE_DOMAIN (itype)) if (itype && !TYPE_DOMAIN (itype))
TYPE_DOMAIN (itype) = TYPE_DOMAIN (type); TYPE_DOMAIN (itype) = domain;
/* The type of the main variant should never be used for arrays /* The type of the main variant should never be used for arrays
of different sizes. It should only ever be completed with the of different sizes. It should only ever be completed with the
size of the array. */ size of the array. */
if (! TYPE_DOMAIN (TYPE_MAIN_VARIANT (type))) if (! TYPE_DOMAIN (TYPE_MAIN_VARIANT (type)))
TYPE_DOMAIN (TYPE_MAIN_VARIANT (type)) = TYPE_DOMAIN (type); TYPE_DOMAIN (TYPE_MAIN_VARIANT (type)) = domain;
} }
pop_obstacks();
/* Lay out the type now that we can get the real answer. */ /* Lay out the type now that we can get the real answer. */
layout_type (type); layout_type (type);
......
...@@ -296,7 +296,7 @@ make_friend_class (type, friend_type) ...@@ -296,7 +296,7 @@ make_friend_class (type, friend_type)
template <class T> friend typename S<T>::X; template <class T> friend typename S<T>::X;
which isn't any of these. */ which isn't any of these. */
cp_error ("typename type `%T' declare `friend'", cp_error ("typename type `%T' declared `friend'",
friend_type); friend_type);
return; return;
} }
......
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