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. */