diff options
author | Jan Hubicka <jh@suse.cz> | 2004-09-03 22:37:03 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2004-09-03 20:37:03 +0000 |
commit | 37e6d6fe839adecbfc5ffeeeb32bd230a3701550 (patch) | |
tree | 42f712b9d5a72b47fe8d9db229a8fc5deab54258 | |
parent | 1e3e17d3bed869f0a2bd3892b03ec53339d2724c (diff) | |
download | gcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.zip gcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.tar.gz gcc-37e6d6fe839adecbfc5ffeeeb32bd230a3701550.tar.bz2 |
* decl.c (finish_function): Clean out pointers we no longer need.
From-SVN: r87055
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/decl.c | 12 |
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. */ |