diff options
Diffstat (limited to 'gcc/tree-loop-linear.c')
-rw-r--r-- | gcc/tree-loop-linear.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c index de16a1e..07afe5d 100644 --- a/gcc/tree-loop-linear.c +++ b/gcc/tree-loop-linear.c @@ -127,7 +127,6 @@ gather_interchange_stats (varray_type dependence_relations, (*dependence_steps) += 0; continue; } - dist = DDR_DIST_VECT (ddr)[loop_number]; if (dist == 0) (*nb_deps_not_carried_by_loop) += 1; @@ -240,6 +239,7 @@ linear_transform_loops (struct loops *loops) { unsigned int i; + compute_immediate_uses (TDFA_USE_OPS | TDFA_USE_VOPS, NULL); for (i = 1; i < loops->num; i++) { unsigned int depth = 0; @@ -247,8 +247,8 @@ linear_transform_loops (struct loops *loops) varray_type dependence_relations; struct loop *loop_nest = loops->parray[i]; struct loop *temp; - VEC (tree) *oldivs; - VEC (tree) *invariants; + VEC (tree) *oldivs = NULL; + VEC (tree) *invariants = NULL; lambda_loopnest before, after; lambda_trans_matrix trans; bool problem = false; @@ -306,11 +306,11 @@ linear_transform_loops (struct loops *loops) { fprintf (dump_file, "DISTANCE_V ("); print_lambda_vector (dump_file, DDR_DIST_VECT (ddr), - loops->num); + DDR_SIZE_VECT (ddr)); fprintf (dump_file, ")\n"); fprintf (dump_file, "DIRECTION_V ("); print_lambda_vector (dump_file, DDR_DIR_VECT (ddr), - loops->num); + DDR_SIZE_VECT (ddr)); fprintf (dump_file, ")\n"); } } @@ -319,6 +319,7 @@ linear_transform_loops (struct loops *loops) /* Build the transformation matrix. */ trans = lambda_trans_matrix_new (depth, depth); lambda_matrix_id (LTM_MATRIX (trans), depth); + trans = try_interchange_loops (trans, depth, dependence_relations, datarefs, loop_nest->num); @@ -359,11 +360,17 @@ linear_transform_loops (struct loops *loops) } lambda_loopnest_to_gcc_loopnest (loop_nest, oldivs, invariants, after, trans); + if (dump_file) + fprintf (dump_file, "Successfully transformed loop.\n"); oldivs = NULL; invariants = NULL; free_dependence_relations (dependence_relations); free_data_refs (datarefs); } - rewrite_into_loop_closed_ssa (); free_df (); + scev_reset (); + rewrite_into_loop_closed_ssa (); +#ifdef ENABLE_CHECKING + verify_loop_closed_ssa (); +#endif } |