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
This commit is contained in:
Nathan Sidwell 1999-05-28 01:56:31 +00:00 committed by Nathan Sidwell
parent 9cb15ab62f
commit 6ab5c7408e
3 changed files with 22 additions and 7 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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)
@ -8568,6 +8568,9 @@ 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)
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);

View File

@ -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;
} }