aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-linear.c
AgeCommit message (Collapse)AuthorFilesLines
2005-01-18basic-block.h, [...]: Update copyright.Kazu Hirata1-1/+1
* basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c, c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c, combine.c, config.gcc, coverage.h, cse.c, cselib.c, defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c, flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c, gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h, output.h, postreload-gcse.c, postreload.c, recog.c, resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c, targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c, tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c, tree-optimize.c, tree-outof-ssa.c, tree-pass.h, tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def, unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright. From-SVN: r93827
2005-01-06re PR tree-optimization/18792 (ICE with -O1 -ftree-loop-linear on small test ↵Daniel Berlin1-23/+31
case) 2005-01-06 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/18792 * tree-data-ref.c (build_classic_dist_vector): Change first_loop to first_loop_depth, and use loop depth instead of loop number. (build_classic_dir_vector): Ditto. (compute_data_dependences_for_loop): Use depth, not loop number. * tree-loop-linear.c (try_interchange_loops): Use loop depth, not loop number. Pass in loops, instead of loop numbers. (gather_interchange_stats): Ditto. (linear_transform_loops): Ditto. From-SVN: r93008
2004-11-03lambda-code.c (lambda_compute_auxillary_space): Update comments.Daniel Berlin1-16/+13
2004-11-02 Daniel Berlin <dberlin@dberlin.org> * lambda-code.c (lambda_compute_auxillary_space): Update comments. (lambda_compute_target_space). Ditto. * lambda.h (lambda_trans_matrix): Ditto. (lambda_linear_expression): Ditto. (lambda_body_vector): Ditto. (lambda_loopnest): Ditto. * tree-loop-linear.c (gather_interchange_stats): Combine tests, update comments, and remove pointless addition of 0. (linear_transform_loops): Update comments. From-SVN: r90029
2004-11-01Fix PR tree-optimization/17672 Fix PR tree-optimization/18168Daniel Berlin1-6/+13
2004-10-16 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17672 Fix PR tree-optimization/18168 * lambda-code.c (lambda_lattice_compute_base): Fix reversed assert test. (gcc_tree_to_linear_expression): Add extra to existing constant. (depth_of_nest): Factor out function used in various places. (gcc_loop_to_lambda_loop): Clean up code a little bit. No functional changes. (find_induction_var_from_exit_cond): Stop guessing, and just get the right answer :). (gcc_loopnest_to_lambda_loopnest): Remove useless pre-allocation. Print out message about result of attempt to create perfect nest. (lbv_to_gcc_expression): Add type argument, use it to do math and induction variable creation. (lle_to_gcc_expression): Ditto. (lambda_loopnest_to_gcc_loopnest): Create new iv with same type as oldiv. Pass type argument to lle_to_gcc_expression and lbv_to_gcc_expression. Reset number of iterations after transformation. (perfect_nestify): Remove useless pre-allocation, and cleanup a small amount. * tree-data-ref.c (build_classic_dist_vector): Return false for dependences completely outside of the loop nest we asked about. (build_classic_dir_vector): Ditto. (compute_data_dependences_for_loop): Only add dependence relations inside the loop we asked about. * tree-loop-linear.c (linear_transform_loops): Use DDR_SIZE_VECT. Compute immediate uses. * tree-optimize.c: Move linear_transform_loops to before ivcanon. From-SVN: r89945
2004-09-16[multiple changes]Daniel Berlin1-42/+129
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
2004-09-08Makefile.in (tree-loop-linear.o): Added.Daniel Berlin1-0/+282
2004-09-08 Daniel Berlin <dberlin@dberlin.org> * Makefile.in (tree-loop-linear.o): Added. (OBJS-common): Add tree-loop-linear.o * common.opt: New flag, ftree-loop-linear. * timevar.def: New timevar, TV_TREE_LOOP_LINEAR. * tree-flow.h: Add prototype for linear_transform_loops. * tree-optimize.c: Add linear transform after vectorization. * tree-pass.h: Add struct pass_linear_transform. * tree-ssa-loop.c: Add pass_linear_transform. * tree-loop-linear.c: New file. * lambda-code.c: gcc_assertify. (gcc_loop_to_lambda_loop): Handle all exit tests. Handle case where we have (invariant >= induction var). (find_induction_var_from_exit_cond): Ditto. From-SVN: r87190