On Thu, Apr 21, 2016 at 11:12:48PM -0600, Jeff Law wrote: > On 04/20/2016 12:22 AM, tbsaunde+...@tbsaunde.org wrote: > >From: Trevor Saunders <tbsaunde+...@tbsaunde.org> > > > >gcc/ChangeLog: > > > >2016-04-19 Trevor Saunders <tbsaunde+...@tbsaunde.org> > > > > * var-tracking.c (struct adjust_mem_data): Make side_effects a vector. > > (adjust_mems): Adjust. > > (adjust_insn): Likewise. > > (prepare_call_arguments): Likewise. > >--- > > gcc/var-tracking.c | 30 +++++++++++------------------- > > 1 file changed, 11 insertions(+), 19 deletions(-) > > > >diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c > >index 9f09d30..7fc6ed3 100644 > >--- a/gcc/var-tracking.c > >+++ b/gcc/var-tracking.c > >@@ -926,7 +926,7 @@ struct adjust_mem_data > > bool store; > > machine_mode mem_mode; > > HOST_WIDE_INT stack_adjust; > >- rtx_expr_list *side_effects; > >+ auto_vec<rtx> side_effects; > > }; > Is auto_vec what you really want here? AFAICT this object is never > destructed, so we're not releasing the memory. Am I missing something here?
it is destructed, auto_vec has a destructor, there for adjust_mem_data has a destructor since it has a field with a destructor. adjust_mem_data is always on the stack so the compiler deals with making sure the destructor is called when it goes out of scope. Trev > > > Jeff