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>
* 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.
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
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;
int value = 0;
/* Allocate on the same obstack as TYPE. */
push_obstacks (TYPE_OBSTACK (type), TYPE_OBSTACK (type));
if (initial_value)
{
/* Note MAXINDEX is really the maximum index,
@ -8615,23 +8618,28 @@ complete_array_type (type, initial_value, do_default)
if (maxindex)
{
tree itype;
tree domain;
domain = build_index_type (maxindex);
TYPE_DOMAIN (type) = domain;
TYPE_DOMAIN (type) = build_index_type (maxindex);
if (! TREE_TYPE (maxindex))
TREE_TYPE (maxindex) = TYPE_DOMAIN (type);
TREE_TYPE (maxindex) = domain;
if (initial_value)
itype = TREE_TYPE (initial_value);
else
itype = NULL;
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
of different sizes. It should only ever be completed with the
size of the array. */
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. */
layout_type (type);

View File

@ -296,7 +296,7 @@ make_friend_class (type, friend_type)
template <class T> friend typename S<T>::X;
which isn't any of these. */
cp_error ("typename type `%T' declare `friend'",
cp_error ("typename type `%T' declared `friend'",
friend_type);
return;
}