summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2002-04-30 21:53:53 +0000
committerDavid S. Miller <davem@gcc.gnu.org>2002-04-30 14:53:53 -0700
commit8b16faa2300093cee95e226eaf469ac8c3d6baca (patch)
treec94950f881227a370eb0b70165a2b32090b913b2 /gcc
parent4be9e9cbe4570993119a33c8376a385755085fc8 (diff)
downloadgcc-8b16faa2300093cee95e226eaf469ac8c3d6baca.tar.gz
class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if TYPE_HAS_TRIVIAL_INIT_REF is false or...
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. From-SVN: r52976
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/class.c11
2 files changed, 8 insertions, 9 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d068caf8786..c1520de5b18 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 92f43298bdb..b06828f1203 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -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;