From: Mark Mitchell Date: Tue, 30 Apr 2002 21:53:53 +0000 (+0000) Subject: class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if TYPE_HAS_TRIVIAL_INIT_REF... X-Git-Tag: releases/gcc-3.3.0~5366 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8b16faa2300093cee95e226eaf469ac8c3d6baca;p=thirdparty%2Fgcc.git class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if TYPE_HAS_TRIVIAL_INIT_REF is false or... 2002-04-30 Mark Mitchell * 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d068caf87867..c1520de5b184 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-04-30 Mark Mitchell + + * 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 * decl.c (grokdeclarator): Don't override TYPE_NAME of an diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 92f43298bdb1..b06828f12033 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;