OSDN Git Service

* decl.c (start_function): Clear last_dtor_insn and
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 1999 20:53:47 +0000 (20:53 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 1999 20:53:47 +0000 (20:53 +0000)
last_parm_cleanup_insn.
(push_cp_function_context): Just copy over a little of
the old context, not all of it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29213 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c

index 4b689de..315e38d 100644 (file)
@@ -1,5 +1,10 @@
 1999-09-08  Mark Mitchell  <mark@codesourcery.com>
 
+       * 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.
index c66ba02..f3c67f9 100644 (file)
@@ -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.  */