diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 25dd23df1ecafae8510a21fb8603a0221a674a3c..eb67839a9cb971ca2e8da1f555d8734a117fb789 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+1999-10-31  Mark Mitchell  <mark@codesourcery.com>
+
+	* decl.c (finish_function): Call free_after_parsing for functions
+	we are not immediately turning into RTL.
+
 1999-10-31  Brendan Kehoe  <brendan@cygnus.com>
 
 	* cp-tree.h (flag_dump_translation_unit): Add decl.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 0f9b5ab3ba81e9fc735fd4be5c52661a15b65c5f..14770e2fa4d55a8663aa1c31bdb38caa8dc23819 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -13782,6 +13782,8 @@ finish_function (lineno, flags)
     }
   else
     {
+      /* Clear out memory we no longer need.  */
+      free_after_parsing (current_function);
       /* Since we never call rest_of_compilation, we never clear
 	 CURRENT_FUNCTION.  Do so explicitly.  */
       free_after_compilation (current_function);