diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-21 11:54:14 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-21 11:54:14 +0000 |
commit | 2792bf09ad2a6eb1bcc9ec2b08df6dd04184781d (patch) | |
tree | bf7342f19f76e2784af86de1a433f5a4fe6618a8 /gcc/tree-loop-distribution.c | |
parent | 5b6b0264fdc3bb2756bf6848bc832d189a43a99d (diff) |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191611 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-loop-distribution.c')
-rw-r--r-- | gcc/tree-loop-distribution.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index b24af33d7abc..d29fe1cd386f 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; |