On Fri, 17 Aug 2012, Jakub Jelinek wrote: > On Fri, Aug 17, 2012 at 09:46:35AM +0200, Richard Guenther wrote: > > --- gcc/tree-vect-slp.c (revision 190447) > > +++ gcc/tree-vect-slp.c (working copy) > > @@ -1858,8 +1862,11 @@ new_bb_vec_info (basic_block bb) > > static void > > destroy_bb_vec_info (bb_vec_info bb_vinfo) > > { > > + VEC (slp_instance, heap) *slp_instances; > > + slp_instance instance; > > basic_block bb; > > gimple_stmt_iterator si; > > + unsigned i; > > > > if (!bb_vinfo) > > return; > > @@ -1879,6 +1886,9 @@ destroy_bb_vec_info (bb_vec_info bb_vinf > > free_data_refs (BB_VINFO_DATAREFS (bb_vinfo)); > > free_dependence_relations (BB_VINFO_DDRS (bb_vinfo)); > > VEC_free (gimple, heap, BB_VINFO_GROUPED_STORES (bb_vinfo)); > > + slp_instances = BB_VINFO_SLP_INSTANCES (bb_vinfo); > > + FOR_EACH_VEC_ELT (slp_instance, slp_instances, i, instance) > > + vect_free_slp_instance (instance); > > VEC_free (slp_instance, heap, BB_VINFO_SLP_INSTANCES (bb_vinfo)); > > In this case you should use slp_instances instead of > BB_VINFO_SLP_INSTANCES (bb_vinfo) also in the above VEC_free call.
I followed the destroy_loop_vec_info pattern which probably uses BB_VINFO_SLP_INSTANCES because it NULLs the vector in the place we actually store it. Which is not really important of course, as we free bb_vinfo immediately. Richard. > > destroy_cost_data (BB_VINFO_TARGET_COST_DATA (bb_vinfo)); > > free (bb_vinfo); > > Jakub > > -- Richard Guenther <rguent...@suse.de> SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend