diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-16 16:16:14 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-16 16:16:14 +0000 |
commit | 50caf588c7dc25dbfaf4e0f300ecb2ad2d0d8980 (patch) | |
tree | 6b5fc0131113b7a19fd3ee91525ce7bcdff98ba3 /gcc/lambda.h | |
parent | fbc15ca39b8c83135c70d6dc8495439356b4926f (diff) | |
download | gcc-50caf588c7dc25dbfaf4e0f300ecb2ad2d0d8980.tar.gz |
2004-09-16 Daniel Berlin <dberlin@dberlin.org>
* cfgloop.h (duplicate_loop): Add prototype.
* cfgloopmanip.c (duplicate_loop): Make non-static.
* lambda-code.c (perfect_nestify): Factor out test whether
we can handle this loop into separate function.
Call it.
(can_convert_to_perfect_nest): New function.
(replace_uses_of_x_with_y): Add modify_stmt call.
* tree-loop-linear.c (linear_transform_loops): Call
rewrite_into_loop_closed_ssa and free_df.
2004-09-16 Daniel Berlin <dberlin@dberlin.org>
* lambda-code.c (invariant_in_loop): is_gimple_min_invariant is
loop invariant as well.
(perfect_nestify): new function.
(gcc_loop_to_lambda_loop): New parameters to track lower bounds,
upper bounds, and steps.
Set outerinductionvar properly.
(gcc_loopnest_to_lambda_loopnest): Add loops and need_perfect
parameters.
Return NULL if we need a perfect loop and can't make one.
(lambda_loopnest_to_gcc_loopnest): Correct algorithm.
(not_interesting_stmt): New function.
(phi_loop_edge_uses_def): Ditto.
(stmt_uses_phi_result): Ditto.
(stmt_is_bumper_for_loop): Ditto.
(perfect_nest_p): Ditto.
(nestify_update_pending_stmts): Ditto.
(replace_uses_of_x_with_y): Ditto.
(stmt_uses_op): Ditto.
(perfect_nestify): Ditto.
* lambda-mat.c (lambda_matrix_id_p): New function.
* lambda-trans.c (lambda_trans_matrix_id_p): Ditto.
* lambda.h: Update prototypes.
* tree-loop-linear (linear_transform_loop): Use new
perfect_nest_p. Detect and ignore identity transform.
* tree-ssa-loop.c (pass_linear_transform): Use TODO_write_loop_closed.
2004-09-16 Sebastian Pop <pop@cri.ensmp.fr>
* tree-loop-linear.c (gather_interchange_stats): Add more comments.
Gather also strides of accessed data. Pass in the data references
array.
(try_interchange_loops): Add a new heuristic for handling the temporal
locality. Pass in the data references array.
(linear_transform_loops): Pass the data references array to
try_interchange_loops.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87607 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lambda.h')
-rw-r--r-- | gcc/lambda.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/lambda.h b/gcc/lambda.h index 36a9664e8c9..b7360241acc 100644 --- a/gcc/lambda.h +++ b/gcc/lambda.h @@ -105,7 +105,9 @@ typedef struct lambda_loopnest lambda_loopnest_new (int, int); lambda_loopnest lambda_loopnest_transform (lambda_loopnest, lambda_trans_matrix); - +struct loop; +struct loops; +bool perfect_nest_p (struct loop *); bool lambda_transform_legal_p (lambda_trans_matrix, int, varray_type); void print_lambda_loopnest (FILE *, lambda_loopnest, char); @@ -116,6 +118,7 @@ void print_lambda_loop (FILE *, lambda_loop, int, int, char); lambda_matrix lambda_matrix_new (int, int); void lambda_matrix_id (lambda_matrix, int); +bool lambda_matrix_id_p (lambda_matrix, int); void lambda_matrix_copy (lambda_matrix, lambda_matrix, int, int); void lambda_matrix_negate (lambda_matrix, lambda_matrix, int, int); void lambda_matrix_transpose (lambda_matrix, lambda_matrix, int, int); @@ -153,16 +156,17 @@ lambda_trans_matrix lambda_trans_matrix_inverse (lambda_trans_matrix); void print_lambda_trans_matrix (FILE *, lambda_trans_matrix); void lambda_matrix_vector_mult (lambda_matrix, int, int, lambda_vector, lambda_vector); +bool lambda_trans_matrix_id_p (lambda_trans_matrix); lambda_body_vector lambda_body_vector_new (int); lambda_body_vector lambda_body_vector_compute_new (lambda_trans_matrix, lambda_body_vector); void print_lambda_body_vector (FILE *, lambda_body_vector); -struct loop; - -lambda_loopnest gcc_loopnest_to_lambda_loopnest (struct loop *, +lambda_loopnest gcc_loopnest_to_lambda_loopnest (struct loops *, + struct loop *, + VEC(tree) **, VEC(tree) **, - VEC(tree) **); + bool); void lambda_loopnest_to_gcc_loopnest (struct loop *, VEC(tree) *, VEC(tree) *, lambda_loopnest, |