From be91309cdabe6cd22d8656e8c0333e578918079f Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 8 Sep 1999 20:53:47 +0000 Subject: [PATCH] decl.c (start_function): Clear last_dtor_insn and last_parm_cleanup_insn. * decl.c (start_function): Clear last_dtor_insn and last_parm_cleanup_insn. (push_cp_function_context): Just copy over a little of the old context, not all of it. From-SVN: r29213 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4b689dec6fe..315e38db81d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 1999-09-08 Mark Mitchell + * decl.c (start_function): Clear last_dtor_insn and + last_parm_cleanup_insn. + (push_cp_function_context): Just copy over a little of + the old context, not all of it. + * cp-tree.h (copy_to_permanent): Remove. (permanent_p): Likewise. * decl.c (building_typename_type): Don't use copy_to_permanent. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index c66ba022e22..f3c67f922e0 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -12903,6 +12903,8 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) current_function_assigns_this = 0; current_function_just_assigned_this = 0; current_function_parms_stored = 0; + last_dtor_insn = NULL_RTX; + last_parm_cleanup_insn = NULL_RTX; original_result_rtx = NULL_RTX; base_init_expr = NULL_TREE; current_base_init_list = NULL_TREE; @@ -14483,12 +14485,10 @@ push_cp_function_context (f) { struct language_function *p = ((struct language_function *) - xmalloc (sizeof (struct language_function))); + xcalloc (1, sizeof (struct language_function))); f->language = p; if (f->next) - *p = *f->next->language; - else - bzero (p, sizeof (struct language_function)); + p->binding_level = f->next->language->binding_level; /* For now, we always assume we're expanding all the way to RTL unless we're explicitly doing otherwise. */