55th Cygnus<->FSF merge
authorMike Stump <mrs@gcc.gnu.org>
Wed, 1 Feb 1995 19:28:29 +0000 (19:28 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Wed, 1 Feb 1995 19:28:29 +0000 (19:28 +0000)
From-SVN: r8849

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/decl2.c
gcc/cp/sig.c

index 7422a38..c5cfb77 100644 (file)
@@ -3,6 +3,18 @@ Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
        * class.c (instantiate_type): Change error message text.
        * typeck2.c (store_init_value): Likewise.
 
+Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
+
+       * decl2.c (finish_file): Fix bug in Jan 31st change.
+
+Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
+
+       * sig.c (build_signature_pointer_or_reference_type): Don't set
+       IS_AGGR_TYPE for signature pointers/reference so expand_default_init
+       doesn't expect to find a copy constructor.
+       * call.c (build_method_call): Treat signature pointers/reference
+       as if IS_AGGR_TYPE were set.
+
 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
 
        * gc.c (get_typeid): Pawn off error messages to build_t_desc.
index ee3e8bf..631f1af 100644 (file)
@@ -1729,7 +1729,10 @@ build_method_call (instance, name, parms, basetype_path, flags)
        }
       else
        {
-         if (! IS_AGGR_TYPE (basetype))
+         if (! IS_AGGR_TYPE (basetype)
+             && ! (TYPE_LANG_SPECIFIC (basetype)
+                   && (IS_SIGNATURE_POINTER (basetype)
+                       || IS_SIGNATURE_REFERENCE (basetype))))
            goto non_aggr_error;
 
          /* If `instance' is a signature pointer/reference and `name' is
index abbcead..0f4ec36 100644 (file)
@@ -2789,7 +2789,7 @@ finish_file ()
 
   /* These must be done in backward order to destroy,
      in which they happen to be!  */
-  while (vars)
+  for (vars = static_aggregates; vars; vars = TREE_CHAIN (vars))
     {
       tree decl = TREE_VALUE (vars);
       tree type = TREE_TYPE (decl);
@@ -2813,7 +2813,6 @@ finish_file ()
          if (TREE_STATIC (vars))
            expand_end_cond ();
        }
-      vars = TREE_CHAIN (vars);
     }
 
   for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors))
index 65938b3..282dce9 100644 (file)
@@ -199,6 +199,9 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp)
     CLASSTYPE_VFIELD (t) = vptr;
     DECL_FCONTEXT (CLASSTYPE_VFIELD (t)) = t;
     TYPE_ALIGN (t) = TYPE_ALIGN (optr_type);
+
+    /* A signature pointer/reference isn't a `real' class.  */
+    IS_AGGR_TYPE (t) = 0;
   }
 
   {