OSDN Git Service

* decl.c (complete_array_type): Allocate off same obstack. Fix
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 May 1999 01:56:31 +0000 (01:56 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 May 1999 01:56:31 +0000 (01:56 +0000)
DO_DEFAULT comment to match reality.
* friend.c (make_friend_class): Fix diagnostic typo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27210 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/friend.c

index 301199a..f6496ec 100644 (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
index 0b2d588..ea6acd7 100644 (file)
@@ -8558,7 +8558,7 @@ expand_static_init (decl, init)
 \f
 /* 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);
index 07cda8f..a2d0c4d 100644 (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;
     }