2002-04-30 Mark Mitchell <mark@codesourcery.com>
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Apr 2002 21:53:53 +0000 (21:53 +0000)
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Apr 2002 21:53:53 +0000 (21:53 +0000)
* class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
TYPE_HAS_TRIVIAL_INIT_REF is false or
TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.

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

gcc/cp/ChangeLog
gcc/cp/class.c

index d068caf..c1520de 100644 (file)
@@ -1,3 +1,9 @@
+2002-04-30  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
+       TYPE_HAS_TRIVIAL_INIT_REF is false or
+       TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.
+
 2002-04-30  Jason Merrill  <jason@redhat.com>
 
        * decl.c (grokdeclarator): Don't override TYPE_NAME of an
index 92f4329..b06828f 100644 (file)
@@ -1882,15 +1882,8 @@ finish_struct_bits (t)
   /* If this type has a copy constructor or a destructor, force its mode to
      be BLKmode, and force its TREE_ADDRESSABLE bit to be nonzero.  This
      will cause it to be passed by invisible reference and prevent it from
-     being returned in a register.
-
-     Also do this if the class has BLKmode but can still be returned in
-     registers, since function_cannot_inline_p won't let us inline
-     functions returning such a type.  This affects the HP-PA.  */
-  if (! TYPE_HAS_TRIVIAL_INIT_REF (t)
-      || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
-      || (TYPE_MODE (t) == BLKmode && ! aggregate_value_p (t)
-         && CLASSTYPE_NON_AGGREGATE (t)))
+     being returned in a register.  */
+  if (! TYPE_HAS_TRIVIAL_INIT_REF (t) || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
     {
       tree variants;
       DECL_MODE (TYPE_MAIN_DECL (t)) = BLKmode;