aboutsummaryrefslogtreecommitdiff
path: root/gcc/lambda.h
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@gcc.gnu.org>2004-09-16 16:16:14 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2004-09-16 16:16:14 +0000
commitf67d92e937b860e1f8d832c8de8249dbc7d657c3 (patch)
tree6b5fc0131113b7a19fd3ee91525ce7bcdff98ba3 /gcc/lambda.h
parent83c9948608ee6c4baec7065a15be34bfc3ae8cd2 (diff)
downloadgcc-f67d92e937b860e1f8d832c8de8249dbc7d657c3.zip
gcc-f67d92e937b860e1f8d832c8de8249dbc7d657c3.tar.gz
gcc-f67d92e937b860e1f8d832c8de8249dbc7d657c3.tar.bz2
[multiple changes]
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. From-SVN: r87607
Diffstat (limited to 'gcc/lambda.h')
-rw-r--r--gcc/lambda.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/lambda.h b/gcc/lambda.h
index 36a9664..b736024 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,