summaryrefslogtreecommitdiff
path: root/gcc/tree-loop-linear.c
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-17 14:25:59 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-17 14:25:59 +0000
commitdfe210e464510e705f64c07eec931449a2f43e19 (patch)
tree07cae7d173df3ab165bcf789fe48c1aeddde3dda /gcc/tree-loop-linear.c
parent9b19ab49482d31ef31c797b7abc5b32f5a391995 (diff)
downloadgcc-dfe210e464510e705f64c07eec931449a2f43e19.tar.gz
PR middle-end/20256
PR middle-end/26435 * tree-loop-linear.c (linear_transform_loops): Don't test perfect_nest_p. Call rewrite_into_loop_closed_ssa only when something changed. * lambda.h (gcc_loopnest_to_lambda_loopnest): Update declaration. * lambda-code.c (can_convert_to_perfect_nest): Declared. (gcc_loopnest_to_lambda_loopnest): Removed need_perfect_nest parameter. Test for perfect_nest_p here. Fix formating. (replace_uses_equiv_to_x_with_y): Fix formating. (stmt_uses_op): Removed. (can_convert_to_perfect_nest): Removed loopivs parameter. Complete the test by checking the scalar dependences. (perfect_nestify): Remove the test for can_convert_to_perfect_nest. Fix formating. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113862 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-loop-linear.c')
-rw-r--r--gcc/tree-loop-linear.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c
index c648ef77c0d..e0f5bd2991b 100644
--- a/gcc/tree-loop-linear.c
+++ b/gcc/tree-loop-linear.c
@@ -241,6 +241,7 @@ try_interchange_loops (lambda_trans_matrix trans,
void
linear_transform_loops (struct loops *loops)
{
+ bool modified = false;
unsigned int i;
VEC(tree,heap) *oldivs = NULL;
VEC(tree,heap) *invariants = NULL;
@@ -255,7 +256,6 @@ linear_transform_loops (struct loops *loops)
lambda_loopnest before, after;
lambda_trans_matrix trans;
bool problem = false;
- bool need_perfect_nest = false;
/* If it's not a loop nest, we don't want it.
We also don't handle sibling loops properly,
which are loops of the following form:
@@ -319,13 +319,9 @@ linear_transform_loops (struct loops *loops)
continue;
}
- if (!perfect_nest_p (loop_nest))
- need_perfect_nest = true;
+ before = gcc_loopnest_to_lambda_loopnest (loops, loop_nest, &oldivs,
+ &invariants);
- before = gcc_loopnest_to_lambda_loopnest (loops,
- loop_nest, &oldivs,
- &invariants,
- need_perfect_nest);
if (!before)
continue;
@@ -345,6 +341,7 @@ linear_transform_loops (struct loops *loops)
lambda_loopnest_to_gcc_loopnest (loop_nest, oldivs, invariants,
after, trans);
+ modified = true;
if (dump_file)
fprintf (dump_file, "Successfully transformed loop.\n");
@@ -356,5 +353,7 @@ linear_transform_loops (struct loops *loops)
VEC_free (tree, heap, oldivs);
VEC_free (tree, heap, invariants);
scev_reset ();
- rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa_full_phi);
+
+ if (modified)
+ rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa_full_phi);
}