diff options
Diffstat (limited to 'gcc/tree-if-conv.c')
-rw-r--r-- | gcc/tree-if-conv.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index fc65845..46b20c2 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -977,6 +977,7 @@ predicate_bbs (loop_p loop) static bool if_convertible_loop_p_1 (struct loop *loop, + VEC (loop_p, heap) **loop_nest, VEC (data_reference_p, heap) **refs, VEC (ddr_p, heap) **ddrs) { @@ -986,7 +987,7 @@ if_convertible_loop_p_1 (struct loop *loop, /* Don't if-convert the loop when the data dependences cannot be computed: the loop won't be vectorized in that case. */ - res = compute_data_dependences_for_loop (loop, true, refs, ddrs); + res = compute_data_dependences_for_loop (loop, true, loop_nest, refs, ddrs); if (!res) return false; @@ -1066,6 +1067,7 @@ if_convertible_loop_p (struct loop *loop) bool res = false; VEC (data_reference_p, heap) *refs; VEC (ddr_p, heap) *ddrs; + VEC (loop_p, heap) *loop_nest; /* Handle only innermost loop. */ if (!loop || loop->inner) @@ -1099,7 +1101,8 @@ if_convertible_loop_p (struct loop *loop) refs = VEC_alloc (data_reference_p, heap, 5); ddrs = VEC_alloc (ddr_p, heap, 25); - res = if_convertible_loop_p_1 (loop, &refs, &ddrs); + loop_nest = VEC_alloc (loop_p, heap, 3); + res = if_convertible_loop_p_1 (loop, &loop_nest, &refs, &ddrs); if (flag_tree_loop_if_convert_stores) { @@ -1110,6 +1113,7 @@ if_convertible_loop_p (struct loop *loop) free (dr->aux); } + VEC_free (loop_p, heap, loop_nest); free_data_refs (refs); free_dependence_relations (ddrs); return res; |