Commit a0044be5 by Jakub Jelinek

tree-predcom.c (filter_suitable_components): Free all refs in act->refs vector…

tree-predcom.c (filter_suitable_components): Free all refs in act->refs vector before calling release_component.

	* tree-predcom.c (filter_suitable_components): Free all refs in
	act->refs vector before calling release_component.
	(add_ref_to_chain): Free ref if not adding it to chain->refs.

	* tree-data-ref.c (free_subscripts): Free all subscript objects.

	* tree-loop-linear.c (linear_transform_loops): Initialize
	lambda_obstack only after calling perfect_loop_nest_depth.
	Goto free_and_continue instead of just continue for later failures.

From-SVN: r140376
parent 8f57ac5a
...@@ -1398,6 +1398,7 @@ free_subscripts (VEC (subscript_p, heap) *subscripts) ...@@ -1398,6 +1398,7 @@ free_subscripts (VEC (subscript_p, heap) *subscripts)
{ {
free_conflict_function (s->conflicting_iterations_in_a); free_conflict_function (s->conflicting_iterations_in_a);
free_conflict_function (s->conflicting_iterations_in_b); free_conflict_function (s->conflicting_iterations_in_b);
free (s);
} }
VEC_free (subscript_p, heap, subscripts); VEC_free (subscript_p, heap, subscripts);
} }
......
...@@ -333,12 +333,12 @@ linear_transform_loops (void) ...@@ -333,12 +333,12 @@ linear_transform_loops (void)
lambda_loopnest before, after; lambda_loopnest before, after;
lambda_trans_matrix trans; lambda_trans_matrix trans;
struct obstack lambda_obstack; struct obstack lambda_obstack;
gcc_obstack_init (&lambda_obstack);
depth = perfect_loop_nest_depth (loop_nest); depth = perfect_loop_nest_depth (loop_nest);
if (depth == 0) if (depth == 0)
continue; continue;
gcc_obstack_init (&lambda_obstack);
VEC_truncate (tree, oldivs, 0); VEC_truncate (tree, oldivs, 0);
VEC_truncate (tree, invariants, 0); VEC_truncate (tree, invariants, 0);
VEC_truncate (tree, lambda_parameters, 0); VEC_truncate (tree, lambda_parameters, 0);
...@@ -347,12 +347,12 @@ linear_transform_loops (void) ...@@ -347,12 +347,12 @@ linear_transform_loops (void)
dependence_relations = VEC_alloc (ddr_p, heap, 10 * 10); dependence_relations = VEC_alloc (ddr_p, heap, 10 * 10);
if (!compute_data_dependences_for_loop (loop_nest, true, &datarefs, if (!compute_data_dependences_for_loop (loop_nest, true, &datarefs,
&dependence_relations)) &dependence_relations))
continue; goto free_and_continue;
lambda_collect_parameters (datarefs, &lambda_parameters); lambda_collect_parameters (datarefs, &lambda_parameters);
if (!lambda_compute_access_matrices (datarefs, lambda_parameters, if (!lambda_compute_access_matrices (datarefs, lambda_parameters,
loop_nest->num)) loop_nest->num))
continue; goto free_and_continue;
if (dump_file && (dump_flags & TDF_DETAILS)) if (dump_file && (dump_flags & TDF_DETAILS))
dump_ddrs (dump_file, dependence_relations); dump_ddrs (dump_file, dependence_relations);
......
...@@ -877,7 +877,12 @@ filter_suitable_components (struct loop *loop, struct component *comps) ...@@ -877,7 +877,12 @@ filter_suitable_components (struct loop *loop, struct component *comps)
comp = &act->next; comp = &act->next;
else else
{ {
dref ref;
unsigned i;
*comp = act->next; *comp = act->next;
for (i = 0; VEC_iterate (dref, act->refs, i, ref); i++)
free (ref);
release_component (act); release_component (act);
} }
} }
...@@ -920,7 +925,10 @@ add_ref_to_chain (chain_p chain, dref ref) ...@@ -920,7 +925,10 @@ add_ref_to_chain (chain_p chain, dref ref)
gcc_assert (double_int_scmp (root->offset, ref->offset) <= 0); gcc_assert (double_int_scmp (root->offset, ref->offset) <= 0);
dist = double_int_add (ref->offset, double_int_neg (root->offset)); dist = double_int_add (ref->offset, double_int_neg (root->offset));
if (double_int_ucmp (uhwi_to_double_int (MAX_DISTANCE), dist) <= 0) if (double_int_ucmp (uhwi_to_double_int (MAX_DISTANCE), dist) <= 0)
return; {
free (ref);
return;
}
gcc_assert (double_int_fits_in_uhwi_p (dist)); gcc_assert (double_int_fits_in_uhwi_p (dist));
VEC_safe_push (dref, heap, chain->refs, ref); VEC_safe_push (dref, heap, chain->refs, ref);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment