diff options
author | Teresa Johnson <tejohnson@google.com> | 2013-07-11 21:32:14 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@gcc.gnu.org> | 2013-07-11 21:32:14 +0000 |
commit | 7b24b675378a69ff254e4a4b5faa3615d4abd84d (patch) | |
tree | d76fb8801d882b05bf1c9285d1a89d33bf3b002e /gcc | |
parent | 85d4cbb878c645fbb76838f228ac24cd4c898212 (diff) | |
download | gcc-7b24b675378a69ff254e4a4b5faa3615d4abd84d.zip gcc-7b24b675378a69ff254e4a4b5faa3615d4abd84d.tar.gz gcc-7b24b675378a69ff254e4a4b5faa3615d4abd84d.tar.bz2 |
This patch adds a call to ggc_free from va_gc::release, which is called by vec_free.
This patch adds a call to ggc_free from va_gc::release, which is
called by vec_free. This restores the functionality of the old VEC_free
and reduces the memory footprint during compilation.
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.
From-SVN: r200909
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/vec.h | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30f63c4..4454b01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +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. + 2013-07-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> * config/rs6000/rs6000.md (""*tls_gd_low<TLSmode:tls_abi_suffix>"): @@ -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 |