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.

>    destroy_cost_data (BB_VINFO_TARGET_COST_DATA (bb_vinfo));
>    free (bb_vinfo);

        Jakub

Reply via email to