aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-distribution.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-09-21 13:54:14 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2012-09-21 11:54:14 +0000
commitb7ce70b395cc04aa0ec1db5b0007879528b94e0f (patch)
treebf7342f19f76e2784af86de1a433f5a4fe6618a8 /gcc/tree-loop-distribution.c
parenta30b9bb5cd1f6f97833852305d98f17b7b33c2ad (diff)
downloadgcc-b7ce70b395cc04aa0ec1db5b0007879528b94e0f.zip
gcc-b7ce70b395cc04aa0ec1db5b0007879528b94e0f.tar.gz
gcc-b7ce70b395cc04aa0ec1db5b0007879528b94e0f.tar.bz2
re PR tree-optimization/54629 (ICE (segfault) in index_in_loop_nest tree-data-ref.h:608)
2012-09-21 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/54629 * tree-loop-distribution.c (classify_partition): Free loop nest only after freeing ddr. Free ddr and loop nest also if successful. From-SVN: r191611
Diffstat (limited to 'gcc/tree-loop-distribution.c')
-rw-r--r--gcc/tree-loop-distribution.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index b24af33..d29fe1c 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -1019,10 +1019,10 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
ddr = initialize_data_dependence_relation (single_load, single_store,
loops);
compute_affine_dependence (ddr, loop);
- VEC_free (loop_p, heap, loops);
if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know)
{
free_dependence_relation (ddr);
+ VEC_free (loop_p, heap, loops);
return;
}
if (DDR_ARE_DEPENDENT (ddr) != chrec_known)
@@ -1030,6 +1030,7 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
if (DDR_NUM_DIST_VECTS (ddr) == 0)
{
free_dependence_relation (ddr);
+ VEC_free (loop_p, heap, loops);
return;
}
lambda_vector dist_v;
@@ -1040,10 +1041,13 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
if (dist > 0 && !DDR_REVERSED_P (ddr))
{
free_dependence_relation (ddr);
+ VEC_free (loop_p, heap, loops);
return;
}
}
}
+ free_dependence_relation (ddr);
+ VEC_free (loop_p, heap, loops);
partition->kind = PKIND_MEMCPY;
partition->main_dr = single_store;
partition->secondary_dr = single_load;