From: Jason Merrill Date: Tue, 9 Apr 2002 17:01:59 +0000 (-0400) Subject: re PR rtl-optimization/6189 (Regression from 3.0.x: g++ -O3 generates wrong code) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edf5cd1d1d776d7eb0d2d423216a38d4cac21103;p=gcc.git re PR rtl-optimization/6189 (Regression from 3.0.x: g++ -O3 generates wrong code) PR optimization/6189 * semantics.c (genrtl_start_function): Don't free DECL_SAVED_FUNCTION_DATA for inline functions. From-SVN: r52082 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c0477bdf96c..1f30899d935 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2002-04-09 Jason Merrill + PR optimization/6189 + * semantics.c (genrtl_start_function): Don't free + DECL_SAVED_FUNCTION_DATA for inline functions. + * init.c (build_member_call): For now, don't convert to intermediate base if it would cause an error. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 39f9567d063..fb6e1823e75 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2470,9 +2470,14 @@ genrtl_start_function (fn) if (!current_function_cannot_inline) current_function_cannot_inline = cp_function_chain->cannot_inline; - /* We don't need the saved data anymore. */ - free (DECL_SAVED_FUNCTION_DATA (fn)); - DECL_SAVED_FUNCTION_DATA (fn) = NULL; + /* We don't need the saved data anymore. Unless this is an inline + function; we need the named return value info for + cp_copy_res_decl_for_inlining. */ + if (! DECL_INLINE (fn)) + { + free (DECL_SAVED_FUNCTION_DATA (fn)); + DECL_SAVED_FUNCTION_DATA (fn) = NULL; + } } /* Keep track of how many functions we're presently expanding. */