Commit b7ce70b3 by Jakub Jelinek Committed by Richard Biener

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
parent a30b9bb5
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.
2012-09-21 Matthias Klose <doko@ubuntu.com> 2012-09-21 Matthias Klose <doko@ubuntu.com>
* config/arm/arm.c (arm_mangle_type): Don't warn anymore that * config/arm/arm.c (arm_mangle_type): Don't warn anymore that
......
...@@ -1019,10 +1019,10 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition) ...@@ -1019,10 +1019,10 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
ddr = initialize_data_dependence_relation (single_load, single_store, ddr = initialize_data_dependence_relation (single_load, single_store,
loops); loops);
compute_affine_dependence (ddr, loop); compute_affine_dependence (ddr, loop);
VEC_free (loop_p, heap, loops);
if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know) if (DDR_ARE_DEPENDENT (ddr) == chrec_dont_know)
{ {
free_dependence_relation (ddr); free_dependence_relation (ddr);
VEC_free (loop_p, heap, loops);
return; return;
} }
if (DDR_ARE_DEPENDENT (ddr) != chrec_known) if (DDR_ARE_DEPENDENT (ddr) != chrec_known)
...@@ -1030,6 +1030,7 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition) ...@@ -1030,6 +1030,7 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
if (DDR_NUM_DIST_VECTS (ddr) == 0) if (DDR_NUM_DIST_VECTS (ddr) == 0)
{ {
free_dependence_relation (ddr); free_dependence_relation (ddr);
VEC_free (loop_p, heap, loops);
return; return;
} }
lambda_vector dist_v; lambda_vector dist_v;
...@@ -1040,10 +1041,13 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition) ...@@ -1040,10 +1041,13 @@ classify_partition (loop_p loop, struct graph *rdg, partition_t partition)
if (dist > 0 && !DDR_REVERSED_P (ddr)) if (dist > 0 && !DDR_REVERSED_P (ddr))
{ {
free_dependence_relation (ddr); free_dependence_relation (ddr);
VEC_free (loop_p, heap, loops);
return; return;
} }
} }
} }
free_dependence_relation (ddr);
VEC_free (loop_p, heap, loops);
partition->kind = PKIND_MEMCPY; partition->kind = PKIND_MEMCPY;
partition->main_dr = single_store; partition->main_dr = single_store;
partition->secondary_dr = single_load; partition->secondary_dr = single_load;
......
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