This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Invoke ggc_free to free vec being released
- From: Teresa Johnson <tejohnson at google dot com>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Cc: Diego Novillo <dnovillo at google dot com>
- Date: Thu, 11 Jul 2013 14:24:21 -0700
- Subject: [PATCH] Invoke ggc_free to free vec being released
This patch adds a call to ggc_free from va_gc::release, which is
called by vec_free. This was a regression from the old VEC_free
implementation and reduces the memory footprint during compilation.
Bootstrapped and tested on x86_64-unknown-linux-gnu. Ok for trunk?
2013-07-11 Teresa Johnson <tejohnson@google.com>
* vec.h (struct va_gc): Move release out-of-line.
(va_gc::release): Call ggc_free on released vec.
Index: vec.h
===================================================================
--- vec.h (revision 200906)
+++ vec.h (working copy)
@@ -337,10 +337,22 @@ struct va_gc
CXX_MEM_STAT_INFO);
template<typename T, typename A>
- static void release (vec<T, A, vl_embed> *&v) { v = NULL; }
+ static void release (vec<T, A, vl_embed> *&v);
};
+/* Free GC memory used by V and reset V to NULL. */
+
+template<typename T, typename A>
+inline void
+va_gc::release (vec<T, A, vl_embed> *&v)
+{
+ if (v)
+ ::ggc_free (v);
+ v = NULL;
+}
+
+
/* Allocator for GC memory. Ensure there are at least RESERVE free
slots in V. If EXACT is true, grow exactly, else grow
exponentially. As a special case, if the vector had not been
--
Teresa Johnson | Software Engineer | tejohnson@google.com | 408-460-2413