aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-linear.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-loop-linear.c')
-rw-r--r--gcc/tree-loop-linear.c19
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
}