This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]