aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-linear.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-12-23 16:25:52 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-12-23 16:25:52 +0000
commit01be8516aa6411606f2629cdc19c6acf62511ca6 (patch)
tree560661198b65a199d12abbb757c1a4560e199292 /gcc/tree-loop-linear.c
parentf5333fe82b2a99b70066a31462e0137914a3c236 (diff)
downloadgcc-01be8516aa6411606f2629cdc19c6acf62511ca6.zip
gcc-01be8516aa6411606f2629cdc19c6acf62511ca6.tar.gz
gcc-01be8516aa6411606f2629cdc19c6acf62511ca6.tar.bz2
Fix PR47002: memory leaks.
2010-12-23 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/47002 * tree-data-ref.c (compute_data_dependences_for_loop): Pass in a pointer to the loop_nest. (analyze_all_data_dependences): Initialize and free the loop_nest. (free_dependence_relations): Do not free loop_nest. (build_rdg): Pass in the loop_nest, datarefs, and dependence_relations. (free_rdg): Also free the data on edges. * tree-data-ref.h (build_rdg): Update declaration. (compute_data_dependences_for_loop): Same. * tree-if-conv.c (if_convertible_loop_p_1): Pass in the loop_nest. (if_convertible_loop_p): Allocate and free loop_nest. * tree-loop-distribution.c (rdg_flag_loop_exits): Free conds. (free_rdg_components): VEC_free components. (distribute_loop): Update call to build_rdg. Allocate and free loop_nest, datarefs, and dependence_relations. * tree-loop-linear.c (linear_transform_loops): Allocate and free loop_nest. * tree-parloops.c (loop_parallel_p): Same. * tree-predcom.c (tree_predictive_commoning_loop): Same. * tree-vect-data-refs.c (vect_analyze_data_refs): Pass to compute_data_dependences_for_loop a pointer to LOOP_VINFO_LOOP_NEST. * tree-vect-loop.c (new_loop_vec_info): Initialize LOOP_VINFO_LOOP_NEST. (destroy_loop_vec_info): Free LOOP_VINFO_MAY_ALIAS_DDRS and LOOP_VINFO_LOOP_NEST. * tree-vect-slp.c (destroy_bb_vec_info): Call free_data_refs and free_dependence_relations. * tree-vectorizer.h (struct _loop_vec_info): Add a field loop_nest. (LOOP_VINFO_LOOP_NEST): New. From-SVN: r168210
Diffstat (limited to 'gcc/tree-loop-linear.c')
-rw-r--r--gcc/tree-loop-linear.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c
index a411c25..fa31b9d 100644
--- a/gcc/tree-loop-linear.c
+++ b/gcc/tree-loop-linear.c
@@ -329,7 +329,8 @@ linear_transform_loops (void)
lambda_trans_matrix trans;
struct obstack lambda_obstack;
struct loop *loop;
- VEC(loop_p,heap) *nest;
+ VEC (loop_p, heap) *nest;
+ VEC (loop_p, heap) *ln;
depth = perfect_loop_nest_depth (loop_nest);
if (depth == 0)
@@ -346,7 +347,8 @@ linear_transform_loops (void)
datarefs = VEC_alloc (data_reference_p, heap, 10);
dependence_relations = VEC_alloc (ddr_p, heap, 10 * 10);
- if (!compute_data_dependences_for_loop (loop_nest, true, &datarefs,
+ ln = VEC_alloc (loop_p, heap, 3);
+ if (!compute_data_dependences_for_loop (loop_nest, true, &ln, &datarefs,
&dependence_relations))
goto free_and_continue;
@@ -412,6 +414,7 @@ linear_transform_loops (void)
free_dependence_relations (dependence_relations);
free_data_refs (datarefs);
VEC_free (loop_p, heap, nest);
+ VEC_free (loop_p, heap, ln);
}
FOR_EACH_VEC_ELT (gimple, remove_ivs, i, oldiv_stmt)