aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-09-03 22:37:03 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2004-09-03 20:37:03 +0000
commit37e6d6fe839adecbfc5ffeeeb32bd230a3701550 (patch)
tree42f712b9d5a72b47fe8d9db229a8fc5deab54258 /gcc
parent1e3e17d3bed869f0a2bd3892b03ec53339d2724c (diff)
downloadgcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.zip
gcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.tar.gz
gcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.tar.bz2
* decl.c (finish_function): Clean out pointers we no longer need.
From-SVN: r87055
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4dafed9..4e25f69 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2004-09-03 Jan Hubicka <jh@suse.cz>
+
+ * decl.c (finish_function): Clean out pointers we no longer need.
+
2004-09-03 Jan Beulich <jbeulich@novell.com>
* g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 55db551..1aed934 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -10451,11 +10451,23 @@ finish_function (int flags)
/* Genericize before inlining. */
if (!processing_template_decl)
{
+ struct language_function *f = DECL_SAVED_FUNCTION_DATA (fndecl);
cp_genericize (fndecl);
+ /* Clear out the bits we don't need. */
+ f->x_current_class_ptr = NULL;
+ f->x_current_class_ref = NULL;
+ f->x_eh_spec_block = NULL;
+ f->x_in_charge_parm = NULL;
+ f->x_vtt_parm = NULL;
+ f->x_return_value = NULL;
+ f->bindings = NULL;
/* Handle attribute((warn_unused_result)). Relies on gimple input. */
c_warn_unused_result (&DECL_SAVED_TREE (fndecl));
}
+ /* Clear out the bits we don't need. */
+ local_names = NULL;
+ named_label_uses = NULL;
/* We're leaving the context of this function, so zap cfun. It's still in
DECL_STRUCT_FUNCTION, and we'll restore it in tree_rest_of_compilation. */