From: Mark Mitchell Date: Tue, 6 Jul 2004 07:16:32 +0000 (+0000) Subject: revert: re PR tree-optimization/16115 (double-destruction problem with argument passi... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a95d27c83b595db1e4e428fb3b0eba12cd6e7107;p=gcc.git revert: re PR tree-optimization/16115 (double-destruction problem with argument passing via temporary (breaks auto_ptr)) Revert: 2004-06-24 Jason Merrill PR c++/16115 * decl.c (grokparms): Give the PARM_DECL reference type if the parameter is passed by invisible reference. From-SVN: r84147 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2d7f89dcb19..a9dc8578333 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2004-07-06 Mark Mitchell + + Revert: + 2004-06-24 Jason Merrill + PR c++/16115 + * decl.c (grokparms): Give the PARM_DECL reference type if the + parameter is passed by invisible reference. + 2004-07-05 Richard Kenner * cp-lang.c (cp_var_mod_type_p): Add extra arg. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 25ecca7ab1c..fbc7dd72890 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8220,13 +8220,6 @@ grokparms (cp_parameter_declarator *first_parm, tree *parms) if (type != error_mark_node) { - /* If this type is passed by invisible reference, make the PARM_DECL - reflect that so that alias analysis knows that the actual object - is external to the function. */ - if (TREE_ADDRESSABLE (type)) - decl = build_decl (PARM_DECL, DECL_NAME (decl), - build_reference_type (type)); - /* Top-level qualifiers on the parameters are ignored for function types. */ type = cp_build_qualified_type (type, 0); @@ -8261,7 +8254,7 @@ grokparms (cp_parameter_declarator *first_parm, tree *parms) } if (!any_error && init) - init = check_default_argument (type, init); + init = check_default_argument (decl, init); else init = NULL_TREE; }