| APPLE LOCAL file lno |
| 2004-07-18 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| Merge from mainline (lno-merge-20040718). |
| |
| 2004-07-17 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (tree-cfg.o): Add CFGLAYOUT_H dependency. |
| * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Do not |
| free the dominators. |
| * passes.c (rest_of_handle_loop2): Free the dominators. |
| * sched-rgn.c (compute_trg_info): Initialize fields of variable el. |
| * tree-cfg.c: Include cfglayout.h. |
| (tree_duplicate_bb): Copy also phi nodes. |
| (struct ssa_name_map_entry): New type. |
| (collect_defs, add_phi_args_after_copy, ssa_name_map_entry_hash, |
| ssa_name_map_entry_eq, allocate_ssa_names, |
| rewrite_to_new_ssa_names_def, rewrite_to_new_ssa_names_use, |
| rewrite_to_new_ssa_names, tree_duplicate_sese_region): New functions. |
| * tree-flow.h (tree_duplicate_sese_region): Declare. |
| * tree-ssa-loop-ch.c (mark_defs_for_rewrite, duplicate_blocks): Removed. |
| (copy_loop_headers): Use tree_duplicate_sese_region. |
| * tree-ssa-loop-manip.c (copy_phi_nodes): Only copy the phi node |
| arguments. |
| * tree-ssa-pre.c (gate_pre): Disable the optimization. |
| |
| 2004-07-14 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_is_simple_use): Additional argument. |
| (vect_is_supportable_op): Call vect_is_simple_use with extra argument. |
| (vect_is_supportbale_store): Likewise. |
| (vect_is_supportbale_assignment): Likewise. |
| (vect_mark_stmts_to_be_vectorized): Cleanup - use vect_is_simple_use. |
| (vect_get_vec_def_for_operand): Cleanup. |
| |
| (vect_analyze_data_refs): Support certain forms of COMPONENT_REF as |
| array_base. Use force_gimple in handling of data-refs. |
| (vect_force_dr_alignment_p): Support certain forms of COMPONENT_REF. |
| (vect_align_data_ref): Likewise. |
| (vect_analyze_data_ref_dependence): Likewise. |
| |
| (vect_analyze_operations): Remove duplicate calls to vect_debug_details. |
| (vect_analyze_scalar_cycles): Likewise. |
| (vect_analyze_data_ref_dependence): Likewise. |
| (vect_analyze_data_refs_alignment): Likewise. |
| (vect_analyze_pointer_ref_access): Likewise. |
| (vect_analyze_pointer_ref_access): Likewise. |
| (vect_analyze_data_refs): Likewise. |
| (vect_analyze_loop_form): Likewise. |
| |
| 2004-07-13 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-data-ref.c: Fix some comments for inclusion in mainline. |
| (tree_fold_gcd): Moved... |
| * tree.c (tree_fold_gcd): ...here. |
| * tree.h (tree_fold_gcd): Declared here. |
| |
| 2004-07-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-niter.c (mark_maybe_infinite_loops): Handle abnormal |
| edges. |
| |
| 2004-07-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (tree-ssa-loop.o, tree-ssa-dce.o): Add function.h |
| dependency. |
| * builtins.c (expand_builtin): Handle BUILT_IN_MAYBE_INFINITE_LOOP. |
| * builtins.def (BUILT_IN_MAYBE_INFINITE_LOOP): New builtin. |
| * function.h (struct function): Add marked_maybe_inf_loops field. |
| * timevar.def (TV_MARK_MILOOPS): New timevar. |
| * tree-flow.h (mark_maybe_infinite_loops): Declare. |
| * tree-optimize.c (init_tree_optimization_passes): Add |
| pass_mark_maybe_inf_loops. |
| * tree-pass.h (pass_mark_maybe_inf_loops): Declare. |
| * tree-ssa-dce.c: Include function.h. |
| (find_obviously_necessary_stmts): Mark back edges only if they were |
| not marked already. |
| (perform_tree_ssa_dce): Do not call mark_dfs_back_edges here. |
| * tree-ssa-loop-niter.c (unmark_surely_finite_loop, |
| mark_maybe_infinite_loops): New functions. |
| * tree-ssa-loop.c: Include function.h. |
| (tree_mark_maybe_inf_loops, gate_tree_mark_maybe_inf_loops, |
| pass_mark_maybe_inf_loops): New pass. |
| * tree-ssa-operands.c (function_ignores_memory_p): Add |
| BUILT_IN_MAYBE_INFINITE_LOOP. |
| |
| 2004-07-12 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * Makefile.in (tree-scalar-evolution.o): Remove dependences on |
| tree-vectorizer.h and tree-data-ref.h. |
| (tree-data-ref.o): Add dependence on lambda.h. |
| * lambda-trans.c, lambda.h: Add missing copyright notice. |
| * tree-scalar-evolution.c: Don't include tree-data-ref.h and |
| tree-vectorizer.h. Fix some comments. |
| * tree-scalar-evolution.h (simple_iv): Modified to match the |
| declaration that is in mainline. |
| |
| 2004-07-11 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: Update documentation. Use '#ifdef |
| ENABLE_CHECKING' to guard checks that are expected to have been |
| verified during analysis. Use vect_debug_details/vect_debug_stats |
| for dumping information. |
| |
| * tree-vectorizer.h (struct _stmt_vec_info): New field "memtag". |
| (STMT_VINFO_MEMTAG): Access macro for new field "memtag". |
| * tree-vectorizer.c (vect_create_data_ref): Get tag from new field. |
| (vect_analyze_data_refs): Record the tag in the new memtag field. |
| |
| (vect_align_data_ref): Remove unused argument. |
| (vect_analyze_data_refs): Call vect_align_data_ref with one argument. |
| (vect_get_array_first_index): Additional argument to return the |
| index rather than as the return value of the function. |
| (create_index_for_array_ref): Call vect_get_array_first_index with |
| an extra argument. |
| (vect_create_data_ref): Remove unused argument. |
| (vect_debug_stats, vect_debug_details): Argument "string" removed. |
| |
| (vect_analyze_pointer_ref_access): New function. |
| (vect_analyze_data_refs): Call vect_analyze_pointer_ref_access. |
| |
| (vect_finish_stmt_generation): New function. |
| (vect_transform_assignment, vect_transform_op, vect_transform_store): |
| (vect_transform_load): Call vect_finish_stmt_generation. |
| |
| (get_vectype_for_scalar_type): No need to iterate through the |
| different modes - build_vector_type already does that. |
| |
| (vect_transform_loop_bound): Check which edge is actually the 'then'. |
| |
| (vect_analyze_operations): Temporarily disable vectorization of loops |
| with unknown loop bound. |
| |
| 2004-07-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (determine_biv_step): Use simple_iv. |
| |
| 2004-07-09 Devang Patel <dpatel@apple.com> |
| |
| * Makefile.in (tree-ssa-loop-manip.o): Add tree-scalar-evolution.h |
| dependency. |
| * tree-scalar-evolution.c (scev_rest): Check scalar_evolution_info |
| and current_loops. |
| * tree-ssa-loop-manip.c (tree-scalar-evolution.h): Include. |
| (tree_duplicate_loop_to_header_edge): scev_reset () in the end. |
| |
| 2004-07-09 Steven Bosscher <stevenb@suse.de>, |
| Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-pre.c: Merge changes from mainline. |
| |
| 2004-07-09 Steven Bosscher <stevenb@suse.de> |
| |
| * varray.h (varray_data_enum): Remove VARRAY_DATA_DG. |
| |
| 2004-07-08 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * varray.c (element): Don't include dependence_node_def. |
| |
| 2004-07-08 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * Makefile.in (OBJS-common): Remove tree-dg.o. |
| (tree-dg.o): Removed. |
| (GTFILES): Remove tree-dg.h. |
| * gengtype.c (open_base_files): Remove tree-dg.h. |
| * tree-data-ref.c (subscript_dependence_tester): Don't define. |
| (dump_data_dependence_relation): Print data references only |
| when they are not NULL. |
| (analyze_array_top): Removed. |
| (initialize_data_dependence_relation): Is extern now. |
| When the data references are NULL the relation is not known. |
| (compute_affine_dependence): Is extern now. |
| (find_data_references_in_loop): Returns chrec_dont_know when |
| failing to analyze a difficult case. |
| (compute_data_dependences_for_loop): Terminate earlier when |
| find_data_references_in_loop fails. |
| * tree-data-ref.h (data_dependence_relation): Update comments. |
| (initialize_data_dependence_relation, compute_affine_dependence): |
| Declared extern. |
| * tree-dg.c, tree-dg.h: Removed. |
| * tree-flow-inline.h (dg_node_for_stmt): Removed. |
| * tree-flow.h: Don't include tree-dg.h. |
| (stmt_ann_d): Remove dependence_node field. |
| * tree-ssa-loop.c: Include tree-data-ref.h. |
| (tree_vectorize, tree_linear_transform): Don't construct the dg_graph. |
| * tree-vectorizer.c: Remove some declarations of static functions. |
| (vect_analyze_data_ref_dependence): Extra parameter for the vectorized |
| loop. Don't rely on the information provided by the data |
| reference structure. Compute directly the relation between |
| the data references instead of querying this information in |
| the dg_graph. |
| (vect_analyze_data_ref_dependences): Pass to |
| vect_analyze_data_ref_dependence the information about the |
| vectorized loop. |
| * varray.h (varray_data_tag): Remove dependence_node_def. |
| |
| 2004-07-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (cand_value_at): Handle types correctly. |
| (may_eliminate_iv): Verify there is no overflow. |
| |
| 2004-07-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (find_bivs, find_givs_in_stmt_scev): |
| Ensure that step of the iv satisfies cst_and_fits_in_hwi. |
| (determine_use_iv_cost_outer): Preserve the fact that the cost |
| is infinity. |
| * tree-ssa-loop-prefetch.c (WRITE_CAN_USE_READ_PREFETCH, |
| READ_CAN_USE_WRITE_PREFETCH, HAVE_FORWARD_PREFETCH, |
| HAVE_BACKWARD_PREFETCH, ACCEPTABLE_MISS_RATE): New macros. |
| (struct mem_ref_group): Type of step changed to HOST_WIDE_INT. |
| (struct mem_ref): Type of delta changed to HOST_WIDE_INT. |
| (dump_mem_ref, find_or_create_group, record_ref, |
| struct ar_data, idx_analyze_ref, analyze_ref, |
| gather_memory_references_ref, issue_prefetch_ref): Updated to reflect |
| this. |
| (ddown): New function. |
| (prune_ref_by_self_reuse, prune_ref_by_group_reuse): |
| Implement. |
| (prune_ref_by_reuse): Use WRITE_CAN_USE_READ_PREFETCH and |
| READ_CAN_USE_WRITE_PREFETCH. |
| (prune_group_by_reuse): Add dumps. |
| (issue_prefetch_ref): Assert that PREFETCH_BLOCK is a power of 2. |
| * tree.c (cst_and_fits_in_hwi): Update comment and fix semantics. |
| (int_cst_value, build_int_cst): Check that we use them only for |
| types representable in HOST_WIDE_INT. |
| |
| 2004-07-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Remove bogus check for chrec_contains_undetermined. |
| |
| 2004-07-06 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * basic-block.h (edge_source, edge_destination): Removed. |
| * cfgloop.c (superloop_at_depth): Fix comment. |
| * cfgloop.h (loop_from_num, outer_loop, inner_loop, next_loop, |
| loop_num, loop_depth, loop_header, loop_nb_iterations, |
| loop_num_exits, loop_exit_edges, loop_exit_edge): Removed. |
| * lambda-code.c, tree-cfg.c, tree-data-ref.c, tree-dg.c, |
| tree-elim-check.c, tree-scalar-evolution.c, tree-ssa-dom.c, |
| tree-ssa-loop-ivcanon.c, tree-vectorizer.c: Inline removed functions. |
| * tree-data-ref.c: Rewrite some comments. |
| * tree-flow-inline.h (loop_of_stmt): Renamed loop_containing_stmt. |
| |
| 2004-07-04 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_create_data_ref, vect_init_vector): |
| Use insert_on_edge to add code in loop preheader. |
| (vect_transform_loop): Make sure there's a preheader BB. |
| |
| 2004-06-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-prefetch.c: New file. |
| * Makefile.in (tree-ssa-loop-prefetch.o): Add. |
| * timevar.def (TV_TREE_PREFETCH): New. |
| * tree-flow.h (tree_ssa_prefetch_arrays, |
| standard_iv_increment_position): Declare. |
| * tree-optimize.c (init_tree_optimization_passes): Add |
| pass_loop_prefetch. |
| * tree-pass.h (pass_loop_prefetch): Declare. |
| * tree-ssa-loop-ivcanon.c (estimate_loop_size): Force the size to be |
| nonzero. |
| * tree-ssa-loop-ivopts.c (cst_and_fits_in_hwi): Moved to tree.c. |
| (standard_iv_increment_position): New function. |
| (zero_p): Export. |
| * tree-ssa-loop-niter.c (zero_p): Remove duplicate function. |
| * tree-ssa-loop.c (tree_ssa_loop_prefetch, |
| gate_tree_ssa_loop_prefetch): New functions. |
| (pass_loop_prefetch): New pass structure. |
| * tree-ssa-operands.c (function_ignores_memory_p): New function. |
| (get_expr_operands): Use it. |
| * tree.c (cst_and_fits_in_hwi): Moved from tree-ssa-loop-ivopts.c. |
| * tree.h (zero_p, cst_and_fits_in_hwi): Declare. |
| |
| 2004-06-28 Daniel Berlin <dberlin@dberlin.org> |
| |
| * lambda-code.c (print_linear_expression): Rename a few variables, |
| simplify some code. |
| (print_lambda_loop): Ditto. |
| (lambda_compute_auxillary_space): Update a comment. |
| (gcc_loop_to_lambda_loop): Update code for chrec_dont_know change. |
| (struct dir_dist_pair): New. |
| (reverse_dep): Ditto. |
| (lambda_dep_mult_constant): New function. |
| (lambda_dep_add): Ditto. |
| (lambda_vec_distdirvec_mult): Ditto. |
| (lambda_vec_distdirmat_mult): Ditto. |
| (lambda_deps_positive): Ditto. |
| (lambda_transform_legal_p): Ditto. |
| * lambda-mat.c (lambda_matrix_mult): Cleanup |
| (lambda_matrix_delete_rows): Ditto. |
| (lambda_matrix_row_add): Ditto. |
| (lambda_matrix_col_exchange): Ditto. |
| (lambda_trans_matrix_is_nonsingular): Rename to standard gcc predicate |
| naming. |
| (lambda_trans_matrix_is_fullrank): Ditto. |
| (lambda_trans_matrix_base): Rename to reflect actual computation. |
| * lambda.h (lambda_transform_legal_p): Add prototype. |
| * tree-loop-linear.c (linear_transform_loops): Rewrite a bit, use legality |
| tester to test transforms. |
| |
| 2004-06-28 Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-data-ref.c (build_classic_dist_vector): Add argument, stop |
| making out-of-bounds array accesses when analyzing less than |
| all the loops. Add checks to verify. |
| (build_classic_dir_vector): Ditto. |
| (compute_data_dependences_for_loop): Pass in starting loop number |
| to build_classic_*. |
| |
| 2004-06-27 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree.def (INTERVAL_CHREC): Removed. |
| (SCEV_KNOWN, SCEV_NOT_KNOWN): New nodes. |
| * tree-pretty-print.c (dump_generic_node): Handle SCEV_KNOWN and |
| SCEV_NOT_KNOWN nodes. |
| * tree-chrec.h (build_polynomial_chrec): When one of the |
| operands is chrec_dont_know, return directly chrec_dont_know. |
| * tree-scalar-evolution.c (instantiate_parameters_1): Same. |
| (initialize_scalar_evolutions_analyzer): Build chrec_dont_know using a |
| SCEV_NOT_KNOWN node, and chrec_known with a SCEV_KNOWN node. |
| |
| 2004-06-24 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.c (chrec_fold_automatically_generated_operands, |
| chrec_merge): |
| Use chrec_dont_know instead of a call to chrec_contains_undetermined. |
| (tree_fold_factorial, tree_fold_binomial, chrec_evaluate): Resurrect. |
| (chrec_apply): Reinsert the cases that were removed. |
| (chrec_convert): Remove the check for NULL_TREE inserted two days ago. |
| * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): As a sequel of |
| removing the tree_fold_* functions, the analyzed trees can contain |
| NON_LVALUE_EXPR nodes. Use STRIP_TYPE_NOPS for avoiding these nodes. |
| (number_of_iterations_in_loop): Add the missing open parenthesis in |
| the debugging dumps. |
| (initialize_scalar_evolutions_analyzer): Use an INTERVAL_CHREC for |
| constructing the chrec_dont_know node. This fixes some strange |
| problems that arise when chrec_dont_know is an INTEGER_CST. |
| * tree.def (INTERVAL_CHREC): Resurrect. |
| |
| 2004-06-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-chrec.c (chrec_merge): Handle case when one of the arguments |
| was not analyzed yet correctly. |
| |
| 2004-06-23 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.c (chrec_fold_automatically_generated_operands): Now |
| static. Clean comments. |
| (hide_evolution_in_loop, chrec_merge_types): Removed. |
| * tree-chrec.h (hide_evolution_in_loop, |
| chrec_fold_automatically_generated_operands): Remove declarations. |
| * tree-scalar-evolution.c: Remove an old part of the comment at the |
| beginning of the file. |
| (compute_overall_effect_of_inner_loop, |
| compute_overall_effect_of_inner_loop, add_to_evolution_1, |
| analyze_scalar_evolution_1, analyze_scalar_evolution): Test for |
| chrec_dont_know instead of calling chrec_contains_undetermined. |
| |
| 2004-06-22 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_create_data_ref): Fix setting of mem_tag. |
| (vect_analyze_data_refs): Make sure we have a mem_tag. |
| |
| 2004-06-22 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-fold-const.c, tree-fold-const.h: Removed. |
| * Makefile.in (SCEV_H, tree-chrec.o): Remove tree-fold-const.h. |
| (OBJS-common): Remove tree-fold-const.o. |
| (tree-fold-const.o): Removed. |
| * gengtype.c (open_base_files): Remove tree-fold-const.h. |
| * lambda-code.c, tree-chrec.c, tree-data-ref.c, tree-dg.c, |
| tree-elim-check.c, tree-loop-linear.c, tree-pretty-print.c, |
| tree-scalar-evolution.c, tree-ssa-loop-ivcanon.c, |
| tree-ssa-loop-ivopts.c, tree-ssa-loop-niter.c, tree-vectorizer.c: |
| Don't include tree-fold-const.h. |
| * tree-chrec.c, tree-data-ref.c: Replace uses of tree_fold_* with |
| fold (build (*, ...)) |
| * tree-data-ref.c (tree_fold_gcd, tree_fold_divides_p, |
| tree_fold_bezout): Saved from deletion here. |
| |
| 2004-06-22 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.c, tree-chrec.h, tree-data-ref.c, tree-dg.c, |
| tree-elim-check.c, tree-scalar-evolution.c, tree-ssa-loop-niter.c, |
| tree-vectorizer.c: Replace chrec_top with chrec_dont_know, |
| and chrec_bot with chrec_known. Replace the checks of chrec_top |
| with calls to chrec_contains_undetermined. |
| * tree.def (INTERVAL_CHREC): Removed. |
| * cfgloop.h (loop): Update comments around nb_iterations field. |
| * lambda-code.c (gcc_loop_to_lambda_loop): Always check for |
| undetermined chrec after calling number_of_iterations_in_loop. |
| * tree-chrec.c (chrec_fold_multiply_ival_cst, |
| chrec_fold_multiply_ival_ival, |
| chrec_merge_types, chrec_contains_intervals, chrec_evaluate, |
| chrec_merge_intervals): Removed. |
| (chrec_fold_plus_1, chrec_fold_plus, chrec_fold_minus, |
| chrec_fold_multiply, chrec_merge, |
| evolution_function_is_affine_multivariat, chrec_convert): |
| Remove uses of INTERVAL_CHREC nodes. |
| (chrec_apply): Classify as unknown all the non-affine cases. |
| * tree-fold-const.h (tree_fold_binomial): Removed. |
| * tree-chrec.h (CHREC_LOW, CHREC_UP, |
| chrec_contains_intervals, build_interval_chrec, |
| build_chrec_top_type, evolution_function_is_multivariate, |
| chrec_should_remain_symbolic): Removed. |
| (tree_is_chrec, chrec_zerop, evolution_function_is_affine_p): |
| Remove uses of INTERVAL_CHREC nodes. |
| * tree-data-ref.c (analyze_ziv_subscript, |
| analyze_overlapping_iterations): Same. |
| * tree-pretty-print.c (dump_generic_node): Same. |
| * tree-scalar-evolution.c (chrec_is_positive, |
| instantiate_parameters_1, gather_chrec_stats, |
| initialize_scalar_evolutions_analyzer): Same. |
| (analyze_scalar_evolution_in_loop): Make it static. |
| (resolve_mixers): Fix comments. |
| (chrec_stats, reset_chrecs_counters, dump_chrecs_stats): |
| Remove nb_interval_chrec counter. |
| (chrec_is_positive, simple_iv): Always check for undetermined after |
| a call to number_of_iterations_in_loop or analyze_scalar_evolution. |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables, |
| canonicalize_loop_induction_variables): Same. |
| * tree-ssa-loop-ivopts.c (determine_biv_step): Same. |
| * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Same. |
| (estimate_numbers_of_iterations_loop): Remove redundant call to |
| number_of_iterations_in_loop. |
| * tree-scalar-evolution.h (analyze_scalar_evolution_in_loop): |
| Remove declaration, the function is now static. |
| * tree-vectorizer.c (vect_analyze_loop_with_symbolic_num_of_iters): |
| Don't test for INTERVAL_CHREC nodes. |
| |
| 2004-06-22 Devang Patel <dpatel@apple.com> |
| |
| PR 16105 |
| * tree-vectorizer.c (vect_analyze_operations): Type of MODIFY_EXPR is |
| not reliable. Use LHS's type. |
| |
| 2004-06-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR rtl-optimization/16001 |
| * loop-iv.c (iv_number_of_iterations): Prevent copy propagation in |
| niter_expr. |
| |
| 2004-06-21 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree.def (PEELED_CHREC): Removed. |
| * tree-chrec.c (is_not_constant_evolution, chrec_fold_plus_1, |
| chrec_fold_multiply, chrec_replace_initial_condition, chrec_convert): |
| Don't handle PEELED_CHREC nodes. |
| (chrec_fold_plus_peel_cst, chrec_fold_plus_poly_peel, |
| chrec_fold_plus_peel_poly, chrec_fold_plus_peel_peel, |
| chrec_fold_multiply_peel_cst, chrec_fold_multiply_poly_peel, |
| chrec_fold_multiply_peel_peel, simplify_peeled_chrec): Removed. |
| * tree-chrec.h (tree_is_chrec): Don't handle PEELED_CHREC nodes. |
| (build_peeled_chrec, evolution_function_is_peeled_affine_p): Removed. |
| * tree-pretty-print.c (dump_generic_node): Don't handle |
| PEELED_CHREC nodes. |
| * tree-scalar-evolution.c (analyze_evolution_in_loop, |
| instantiate_parameters_1): Same. |
| (chrec_stats, reset_chrecs_counters, dump_chrecs_stats, |
| gather_chrec_stats): Don't count the number of PEELED_CHREC nodes. |
| |
| 2004-06-18 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * Makefile.in (OBJS-common): Remove tree-elim-check.o. |
| * tree-scalar-evolution.c (first_iteration_non_satisfying_noev_noev, |
| first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev, |
| first_iteration_non_satisfying_ev_ev, |
| first_iteration_non_satisfying_1, |
| first_iteration_non_satisfying): Removed. |
| (number_of_iterations_in_loop): Clean up. |
| * tree-scalar-evolution.h (first_iteration_non_satisfying): Removed. |
| * tree-ssa-loop-ivopts.c (zero_p): Compare tree pointer |
| against NULL_TREE. |
| * tree-ssa-loop.c (tree_ssa_loop_test): Return when loops |
| structure is not available. |
| (tree_elim_checks): Disabled for the moment. Don't call |
| eliminate_redundant_checks. |
| |
| 2004-06-17 Andrew MacLeod <amacleod@redhat.com> |
| |
| * tree-cfg.c (tree_make_forwarder_block): Use SET_PHI_RESULT. |
| * tree-flow-inline.h (get_use_op_ptr): Return a use_operand_p. |
| (get_use_from_ptr, get_def_from_ptr): New. Return operand pointers. |
| (get_def_op_ptr): Return a def_operand_p instead of a 'tree *'. |
| (get_v_may_def_result_ptr): Return a def_operand_p. |
| (get_v_may_def_op_ptr, get_vuse_op_ptr): Return a use_operand_p. |
| (get_v_must_def_op_ptr): Return a def_operand_p. |
| (get_phi_result_ptr): New. Return a pointer to the result of a PHI. |
| (get_phi_arg_def_ptr): New. Return a pointer to an argument of a PHI. |
| (phi_element_for_edge): Remove. |
| * tree-flow.h (propagate_value, replace_exp): Change prototype. |
| (propagate_tree_value): Add new prototype. |
| (phi_element_for_edge): Remove prototype. |
| * tree-into-ssa.c (mark_def_sites): Use new operand types. |
| (prepare_operand_for_rename): Split into two functions. |
| (prepare_use_operand_for_rename): Prepare use operands. |
| (prepare_def_operand_for_rename): Prepare def operands. |
| (rewrite_stmt): Use new operand types. |
| (rewrite_operand): Use new operand types, change parameter type. |
| * tree-outof-ssa.c (replace_variable): Split into two functions. |
| (replace_use_variable): Rewrite uses. |
| (replace_def_variable): Rewrite defs. |
| (rewrite_trees, rewrite_vars_out_of_ssa): Use new operand types. |
| * tree-phinodes.c (make_phi_node, resize_phi_node): Use new types. |
| (add_phi_arg, remove_phi_arg_num): Use new operand types. |
| * tree-ssa-ccp.c (substitute_and_fold): Use new operand types. |
| (ccp_fold, replace_uses_in): Use new operand types. |
| * tree-ssa-copy.c (replace_ssa_names): Rename to replace_ssa_names_ann |
| and no longer set the value, change parameter type. |
| (replace_exp_1): Use new operand types. |
| (propagate_value): Change parameter type, use new operand types. |
| (propagate_tree_value): Propagate_value without SSA operands. |
| (replace_exp, cprop_operand, cprop_into_stmt): Use new operand types. |
| (cprop_into_successor_phis): Use new operand types. |
| * tree-ssa-dom.c (thread_across_edge): Use new operand types. |
| (eliminate_redundant_computations): Use new operand types. |
| * tree-ssa-dse.c (fix_phi_uses): Use new operand_types. |
| (fix_stmt_v_may_defs): Use new operand_types. |
| * tree-ssa-live.c (create_ssa_var_map): Use new operand_types. |
| (build_tree_conflict_graph): Use new operand_types. |
| * tree-ssa-loop.c (duplicate_blocks): Use PHI_ARG_DEF_FROM_EDGE. |
| * tree-ssa-operands.c (struct freelist_d): Remove. |
| (check_optype_freelist, add_optype_freelist): Remove. |
| (allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype, |
| allocate_vuse_optype, allocate_v_must_def_optype): Call ggc_alloc. |
| (free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs): |
| Call ggc_free instead of add_optype_freelist. |
| (init_ssa_operands, fini_ssa_operands): Remove free list code. |
| (finalize_ssa_defs, finalize_ssa_uses): Set new use/def operands. |
| * tree-ssa-operands.h (struct def_optype_d): Change underlying type. |
| (struct use_optype_d): Change underlying type. |
| (def_operand_p, use_operand_p): New types for pointers to operands. |
| (USE_OP, DEF_OP, V_MAY_DEF_RESULT, V_MAY_DEF_OP, VUSE_OP, |
| V_MUST_DEF_OP): Use new pointer type instead of dereferencing directly. |
| (USE_FROM_PTR, DEF_FROM_PTR): New macros to "dereference" operand |
| pointer types. |
| (SET_USE, SET_DEF): New macros to set operands from their pointer. |
| (SET_USE_OP, SET_DEF_OP, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP, |
| SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands. |
| (PHI_RESULT_PTR, PHI_RESULT, SET_PHI_RESULT): Macros to manage the |
| PHI result as an operand. |
| (PHI_ARG_DEF_PTR, PHI_ARG_DEF, SET_PHI_ARG_DEF, PHI_ARG_DEF_FROM_EDGE, |
| PHI_ARG_DEF_PTR_FROM_EDGE): Macros to manage the PHI arguments. |
| * tree-ssa-pre.c (eliminate): Call propagate_tree_value. |
| * tree-tailcall.c (independent_of_stmt_p, propagate_through_phis): Use |
| PHI_ARG_DEF_FROM_EDGE. |
| * tree.h (PHI_RESULT): Renamed to PHI_RESULT_TREE. |
| (PHI_ARG_DEF): Renamed to PHI_ARG_DEF_TREE. |
| |
| * tree-ssa-loop-ivopts.c (find_bivs, mark_bivs, |
| find_interesting_uses_outer_or_nonlin, find_interesting_uses_stmt, |
| find_interesting_uses_outside, add_old_iv_candidates, |
| remove_statement, rewrite_use_nonlinear_expr, split_loop_exit_edge, |
| protect_loop_closed_ssa_form_use, compute_phi_arg_on_exit, |
| rewrite_use_outer): Use new operand types. |
| |
| 2004-06-16 Dale Johannesen <dalej@apple.com> |
| |
| * Makefile.in (GTFILES): Add tree-chrec.h. |
| * tree-chrec.h (chrec_top, chrec_bot): Add GTY. |
| * tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer): |
| Set chrec_top, chrec_bot once per compilation. |
| * gengtype.c (ifiles): Add tree-fold-const.h, tree-chrec.h. |
| |
| 2004-06-16 Dale Johannesen <dalej@apple.com> |
| * tree-flow.h (tree_ann_common-d.aux): Document required behavior. |
| * tree-ssa-loop-manip.c (allocate_new_names): Don't propagate |
| new_names into copies. |
| |
| 2004-06-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR tree-optimization/15993 |
| * tree-ssa-dom.c (thread_across_edge): Do not thread edge if its |
| destination is unchanged. |
| |
| 2004-06-14 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_analyze_data_refs): Minor fix. |
| |
| 2004-06-14 Andrew Pinski <apinski@apple.com> |
| |
| * tree-ssa-return.c: Remove. |
| * Makefile.in (OBJS-common): Remove tree-ssa-return.o |
| (tree-ssa-return.o): Remove. |
| * timevar.def (TV_TREE_RETURN): Remove. |
| * tree-optimize.c (init_tree_optimization_passes): |
| Do not run pass_return. |
| * tree-pass.h (pass_return): Remove declaration. |
| |
| 2004-06-14 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-data-ref.c (init_data_ref): New function. |
| * tree-data-ref.h (init_data_ref): New function. |
| * tree-vectorizer.c (vect_get_array_first_index): Return index instead |
| of success status, and support pointers. |
| (vect_create_index_for_array_ref): Remove ARRAY_REF restriction, and |
| change call to vect_get_array_first_index. |
| (vect_create_data_ref): Handle INDIRECT_REFs. |
| (vect_is_supportable_store): Handle INDIRECT_REFs. |
| (vect_is_supportable_load): Handle INDIRECT_REFs. |
| (vect_analyze_data_ref_dependence): Handle INDIRECT_REFs. |
| (vect_analyze_data_ref_dependences): Remove usage of variable 'ok'. |
| (get_array_base): Removed (not used anymore). |
| (vect_force_dr_alignment_p): Use DR_BASE_NAME instead of |
| get_array_base. |
| (vect_align_data_ref): Likewise. |
| (vect_transform_store): Remove ARRAY_REF restriction. |
| (vect_transform_load): Remove ARRAY_REF restriction. |
| (vect_compute_data_ref_alignment): Support pointers. |
| (vect_analyze_data_refs): Support pointers. |
| |
| (vect_debug_stats): New Function. |
| (vect_debug_details): New Function. |
| (vect_transform_loop): Use vect_debug_stats and vec_debug_details. |
| (vect_analyze_loop): Use vect_debug_details. |
| (vect_analyze_scalar_cycles): Use vect_debug_stats. |
| (vect_analyze_data_ref_dependence): Likewse. |
| (vect_analyze_data_refs_alignment): Likewise. |
| (vect_analyze_data_ref_accesses): Likewise. |
| (vect_analyze_data_refs): Likewise. |
| (vect_analyze_loop_form): Likewise. |
| |
| (vect_gen_if_guard): Formatting fixes (avoid 80 column overflow). |
| (vect_update_initial_conditions_of_duplicatd_loop): Likewise. |
| (vect_transform_loop): Likewise. |
| (vect_analyze_loop_form): Likewise. |
| |
| 2004-06-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from mainline (lno-merge-20040612). |
| |
| 2004-06-13 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-chrec.c (evolution_function_is_affine_multivariat): Add check |
| for POLYNOMIAL_CHREC. |
| * tree-dg.c (ddg_direction_between_stmts): Add check for chrec_top. |
| |
| * tree-pass.h (TODO_write_loop_closed): New to-do flag. |
| * tree-optimize.c (execute_todo): Handle new to-do flag |
| TODO_write_loop_closed. |
| * tree-ssa-loop.c (struct tree_opt_pass pass_vectorize): Set |
| TODO_write_loop_closed. |
| |
| * tree-vectorizer.c (vect_transform_loop): Add calls to |
| add_bb_to_loop. |
| (vect_analyze_data_ref_dependence): Fix last argument in call to |
| ddg_direction_between_stmts. |
| |
| 2004-06-11 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR target/15944 |
| * loop-invariant.c (may_assign_reg_p): Use can_copy_p. |
| |
| 2004-06-11 Olga Golovanevsky <olga@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_generate_tmps_on_preheader): |
| (vect_gen_if_guard): New functions. |
| (vect_update_initial_conditions_of_duplicated_loop): |
| Update also phis of bb at the exit of epilog loop. |
| (vect_transform_loop): Remove code that now belongs to |
| vect_generate_tmps_on_preheader () function. Use |
| vect_gen_if_guard function twice. |
| |
| 2004-06-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ch.c: New file. |
| * Makefile.in (tree-ssa-loop-ch.o): Add. |
| (tree-ssa-loop.o): Add SCEV_H and tree-vectorizer.h dependency. |
| * cfgloop.h (current_loops): Declare. |
| * common.opt (fivcanon, fivopts, floop-test, ftree-lim): Add. |
| (ftree-loop-optimize, fscalar-evolutions, fall-data-deps, |
| ftree-ddg): Remove. |
| * flags.h (flag_scalar_evolutions, flag_all_data_deps, |
| flag_tree_loop, flag_ddg): Removed. |
| (flag_tree_lim, flag_ivcanon, flag_ivopts, |
| flag_tree_ssa_loop_test): New. |
| (f_options): Remove scalar-evolutions, all-data-deps, |
| tree-ddg, tree-loop-optimize. |
| * toplev.c (flag_scalar_evolutions, flag_all_data_deps, |
| flag_tree_loop, flag_ddg): Removed. |
| (flag_tree_lim, flag_ivcanon, flag_ivopts, |
| flag_tree_ssa_loop_test): New. |
| * opts.c (decode_options, common_handle_option): Initialize new |
| options. |
| * timevar.def (TV_SCALAR_EVOLUTIONS, TV_ALL_DATA_DEPS): Removed. |
| (TV_TREE_ELIM_CHECKS, TV_DEP_GRAPH, TV_LIM, TV_COMPLETE_UNROLL, |
| TV_UNSWITCH): Added. |
| * tree-flow.h (test_unrolling_and_peeling, test_loop_versioning): |
| Removed. |
| (tree_unroll_loops_completely): Declare. |
| * tree-optimize.c (init_tree_optimization_passes): Reorganize loop |
| optimizer passes. |
| * tree-pass.h (pass_scev, pass_scev_init, pass_scev_anal, |
| pass_scev_depend, pass_scev_linear_transform, pass_scev_iv_canon, |
| pass_scev_elim_checks, pass_scev_vectorize, pass_scev_done, pass_ddg, |
| pass_delete_ddg): Removed. |
| (pass_loop_init, pass_loop_test, pass_lim, pass_unswitch, |
| pass_iv_canon, pass_record_bounds, pass_elim_checks, pass_vectorize, |
| pass_complete_unroll, pass_linear_transform, pass_iv_optimize, |
| pass_loop_done): Declare. |
| * tree-scalar-evolution.c (current_loops): Moved to tree-ssa-loop.c. |
| (dd_info_available): Removed. |
| (scev_init, scev_depend, scev_elim_checks, scev_vectorize, scev_done, |
| gate_scev, gate_scev_analysis, gate_scev_depend, gate_scev_elim_checks, |
| gate_scev_vectorize): Removed. |
| (pass_scev, pass_scev_init, pass_scev_anal, pass_scev_depend, |
| pass_scev_vectorize, pass_scev_linear_transform, |
| pass_scev_iv_canon, pass_scev_elim_checks, pass_scev_done, |
| pass_ddg, pass_delete_ddg): Removed. |
| * tree-scalar-evolution.h (scev_analysis): Declare. |
| (scev_analysis): Export. |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Add parameter to control whether find_loop_niter_by_eval is run. |
| (canonicalize_induction_variables): Do not unroll loops. |
| (tree_unroll_loops_completely): Split from |
| canonicalize_induction_variables. |
| * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_init, |
| tree_ssa_iv_optimize_finalize, tree_ssa_iv_optimize, |
| tree_ssa_iv_optimize): Global initialization/finalization removed. |
| * tree-ssa-loop-manip.c (test_unrolling_and_peeling, |
| test_loop_versioning): Removed. |
| * tree-ssa-loop.c: Include tree-scalar-evolution.h and |
| tree-vectorizer.h. |
| (current_loops): Moved from tree-scalar-evolution.c. |
| (tree_ssa_loop_opt): Removed. |
| (gate_loop): Removed. |
| (pass_loop): Modified. |
| (should_duplicate_loop_header_p, mark_defs_for_rewrite, |
| duplicate_blocks, do_while_loop_p, copy_loop_headers, |
| gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c. |
| (tree_ssa_loop_init, pass_loop_init, tree_ssa_loop_im, |
| gate_tree_ssa_loop_im, pass_lim, tree_ssa_loop_unswitch, |
| gate_tree_ssa_loop_unswitch, pass_unswitch, tree_ssa_loop_ivcanon, |
| gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_ssa_loop_bounds, |
| pass_record_bounds, tree_ssa_loop_test, pass_loop_test, |
| tree_elim_checks, gate_tree_elim_checks, pass_elim_checks, |
| tree_vectorize, gate_tree_vectorize, pass_vectorize, |
| tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll, |
| tree_linear_transform, gate_tree_linear_transform, |
| pass_linear_transform, tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts, |
| pass_iv_optimize, tree_ssa_loop_done, pass_loop_done): New. |
| * testsuite/gcc.dg/tree-ssa-chrec/*: Updated. |
| |
| 2004-06-10 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree.def: Remove EXPONENTIAL_CHREC node. |
| * tree-chrec.c (is_not_constant_evolution, chrec_fold_plus_1, |
| chrec_fold_multiply, chrec_evaluate, chrec_apply, |
| chrec_replace_initial_condition, initial_condition, |
| hide_evolution_in_loop, hide_evolution_in_other_loops_than_loop, |
| evolution_part_in_loop_num, reset_evolution_in_loop, |
| reset_evolution_in_loop, chrec_merge, is_multivariate_chrec_rec, |
| is_multivariate_chrec, evolution_function_is_affine_multivariate_p, |
| evolution_function_is_univariate_p, chrec_convert): Don't |
| handle EXPONENTIAL_CHREC nodes. |
| (chrec_fold_plus_expo_cst, chrec_fold_plus_cst_expo, |
| chrec_fold_plus_poly_expo, chrec_fold_plus_expo_poly, |
| chrec_fold_plus_expo_expo, chrec_fold_multiply_poly_expo, |
| chrec_fold_multiply_expo_expo, is_pure_sum_chrec): Removed. |
| * tree-chrec.h (tree_is_chrec, evolution_function_is_affine_p): |
| Don't handle EXPONENTIAL_CHREC nodes. |
| (build_exponential_chrec): Removed. |
| (no_evolution_in_loop_p): Use a call to tree_is_chrec for |
| determining when a node represents a scalar evolution. |
| * tree-data-ref.c (siv_subscript_p): Don't handle |
| EXPONENTIAL_CHREC nodes. |
| * tree-pretty-print.c (dump_generic_node): Same. |
| * tree-scalar-evolution.c: Remove FIXME comments about |
| EXPONENTIAL_CHREC nodes. Add a pointer to the slides |
| presented at the GCC Summit 2004 about the scalar evolutions. |
| (compute_overall_effect_of_inner_loop): Clarify the leading comment. |
| (chrec_is_positive, add_to_evolution_1, add_to_evolution, |
| instantiate_parameters_1): Don't handle EXPONENTIAL_CHREC nodes. |
| (multiply_evolution_1, multiply_evolution): Removed. |
| (first_iteration_non_satisfying_ev_ev): Handle only affine |
| functions. |
| (follow_ssa_edge_in_rhs): Cases that were detected as |
| EXPONENTIAL_CHREC nodes are now mapped to the unknown element |
| (be it top or bottom) called chrec_top. |
| (chrec_stats, reset_chrecs_counters, dump_chrecs_stats, |
| gather_chrec_stats): Don't count the EXPONENTIAL_CHREC nodes. |
| * tree-vectorizer.c (vect_is_simple_iv_evolution, |
| vect_analyze_loop_with_symbolic_num_of_iters): Use |
| tree_is_chrec for determining whether the given node has an |
| evolution. |
| |
| 2004-06-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR middle-end/15876 |
| * tree-ssa-loop-ivopts.c (force_var_cost): Initialize DECL_RTL |
| correctly. |
| |
| 2004-06-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * passes.c (rest_of_handle_loop2): Run loop optimizations always. |
| |
| 2004-06-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * ra-build.c (livethrough_conflicts_bb): Check also contains_call. |
| |
| 2004-06-09 Olga Golovanevsky <olga@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vctorizer.c |
| (vect_update_initial_conditions_of_duplicated_loop): |
| Handle general form of "init" and "step" of access function. |
| * tree-ssa-loop-manip.c (tree_duplicate_loop_to_exit_cfg): |
| The exit from loop is taken from bb previous to latch instead |
| of latch itself. |
| |
| 2004-06-08 Andrew Pinski <pinskia@physics.uc.edu> |
| |
| PR tree-opt/15881 |
| * tree-scalar-evolution.c (count_ev_in_wider_type): Use |
| fold_convert instead of convert. |
| (compute_overall_effect_of_inner_loop): Likewise. |
| (chrec_is_positive): Likewise. |
| (add_to_evolution_1): Likewise. |
| (add_to_evolution): Likewise. |
| (first_iteration_non_satisfying_1): Likewise. |
| (follow_ssa_edge_in_rhs): Likewise. |
| (interpret_rhs_modify_expr): Likewise. |
| (number_of_iterations_in_loop): Likewise. |
| |
| 2004-06-08 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR tree-optimization/15779 |
| * tree-scalar-evolution.c (scev_initialize): Clean the nb_iterations |
| field. |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Do |
| not clean nb_iterations field. |
| |
| 2004-06-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * version.c (version_string): Update "merged" stamp. |
| |
| 2004-05-30 Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-loop-linear.c (linear_transform_loops): We don't handle sibling |
| loops, or loops with multiple exits, yet. |
| * lambda-code.c (invariant_in_loop): Check outer loops too for |
| right now. |
| (lle_to_gcc_expression): Special case the coefficient == 1 cases. |
| (lambda_loopnest_to_gcc_loopnest): Use correct test. |
| |
| 2004-05-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| Jeff Law <law@redhat.com> |
| |
| * tree-into-ssa.c (prepare_operand_for_rename): New argument is_use. |
| If the operand is for a use, then strip away the SSA_NAME, do not |
| strip away the SSA_NAME for a set. Never call release_ssa_name. |
| (mark_def_sites): Appropriately pass additional argument to |
| prepare_operand_for_rename. If a VDEF_RESULT is not an SSA_NAME, |
| then set the VDEF_RESULT to the VDEF_OP. |
| (set_def_block): Strip away any SSA_NAME to get to the real |
| underlying variable. |
| (ssa_mark_def_sites): Prevent set_def_block from doing so. |
| |
| * tree-ssa-loop.c (mark_defs_for_rewrite): Record defined ssa names. |
| (duplicate_blocks): Use rewrite_ssa_into_ssa. |
| (pass_ch): Remove TODO_rename_vars. |
| |
| 2004-05-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * opts.c (decode_options): Enable flag_scalar_evolutions by default. |
| |
| 2004-05-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * fold-const.c (fold_widened_comparison, |
| fold_sign_changed_comparison): New. |
| (fold): Use them. |
| * tree-flow.h (struct tree_niter_desc): New field additional_info. |
| * tree-ssa-loop-niter.c (simplify_using_outer_evolutions): Do not |
| rewrite expressions in-place. |
| (tree_simplify_using_condition, simplify_using_initial_conditions): |
| New functions. |
| (number_of_iterations_exit): Use simplify_using_initial_conditions. |
| (struct nb_iter_bound): New field additional. |
| (record_estimate, estimate_numbers_of_iterations_loop): Initialize |
| field additional. |
| (upper_bound_in_type, lower_bound_in_type): Export. Handle |
| unsigned->signed conversion correctly. |
| (can_count_iv_in_wider_type): Pass the additional info to |
| can_count_iv_in_wider_type_bound. |
| (can_count_iv_in_wider_type_bound): Use the additional info. |
| * tree.h (lower_bound_in_type, upper_bound_in_type): Declare. |
| * config/i386/i386.c (legitimate_constant_p): Do not allow |
| integer - symbol. |
| |
| 2004-05-29 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * lambda-code.c: Spell check. |
| * lambda-trans.c: Same. |
| * tree-chrec.c: Same. |
| * tree-dg.c: Same. |
| * tree-loop-linear.c: Same. |
| * tree-ssa-loop-im.c: Same. |
| * tree-ssa-loop-ivcanon.c: Same. |
| * tree-ssa-loop-ivopts.c: Same. |
| * tree-ssa-loop-manip.c: Same. |
| * tree-ssa-loop.c: Same. |
| * tree-vectorizer.c: Same. |
| |
| 2004-05-28 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-niter.c (number_of_iterations_cond): Record correct |
| assumptions. |
| |
| 2004-05-28 Dale Johannesen <dalej@apple.com> |
| |
| * loop-invariant.c (check_maybe_invariant): Disallow hoisting CALLs. |
| |
| 2004-05-27 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| Merge from mainline (lno-merge-20040526). |
| * tree-scalar-evolution.c (draw_tree_cfg): Removed. |
| * tree-into-ssa.c: Didn't merged |
| http://gcc.gnu.org/ml/gcc-patches/2004-05/msg01231.html |
| |
| 2004-05-25 Sebastian Pop <pop@cri.ensmp.fr> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-scalar-evolution.c (first_iteration_non_satisfying_1): |
| Include the evolution of the non varying chrec in other_evs. |
| (number_of_iterations_in_loop): Don't instantiate the chrecs |
| before the computation of loop counts. |
| |
| 2004-05-25 Olga Golovanevsky <olga@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_transform_loop_bound): Advance IVs |
| by correct amount. |
| (vect_transform_loop, vect_build_symbl_bound): Use shifts |
| instead of division/multiplication to advance IVs. |
| |
| 2004-05-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (number_of_iterations_in_loop): |
| Do not produce COND_EXPRs. |
| |
| 2004-05-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (resolve_mixers): New function. |
| (already_instantiated): Type changed to bitmap. |
| (scev_initialize, scev_finalize): Reflect the change. |
| (analyze_scalar_evolution_in_loop): Use resolve_mixers. |
| (instantiate_parameters_1): Add possibility to just resolve mixers. |
| Fold the results. |
| (number_of_iterations_in_loop): Use number_of_iterations_exit. |
| * tree-ssa-loop-niter.c (simplify_using_outer_evolutions): New |
| function. |
| (number_of_iterations_exit): Use it. |
| |
| 2004-05-24 Dale Johannesen <dalej@apple.com> |
| * loop-invariant.c (find_defs): Add DF_EQUIV_NOTES. |
| |
| 2004-05-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (tree-ssa-loop-manip.o): Add cfglayout.h dependency. |
| * tree-flow.h (collect_defs, rename_variables_in_bb, rename_op, |
| allocate_new_names, free_new_names): Declaration removed. |
| (tree_duplicate_loop_to_exit): Declare. |
| * tree-ssa-loop-manip.c: Include cfglayout.h. |
| (collect_defs, rename_variables_in_bb, rename_op, |
| allocate_new_names, free_new_names): Made static. |
| (tdlte_rename_variables_in_loop, tdlte_copy_phi_nodes, |
| tree_duplicate_loop_to_exit_cfg, tree_duplicate_loop_to_exit): |
| Moved from tree-vectorizer.c. |
| * tree-vectorizer.c (vect_duplicate_loopm vect_copy_phi_nodes, |
| vect_rename_variables_in_loop, vect_tree_duplicate_loop): Moved |
| to tree-ssa-loop-manip.c and renamed. |
| |
| 2004-05-20 Olga Golovanevsky <olga@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_transform_loop): New parameter; |
| if bound is unknown, duplicates loop before vectorizing. |
| (vect_transfrom_loop_bound): New parameter; now deal with |
| symbolic loop bound. |
| (vect_analyze_loop_with_symbolic_num_of_iters) |
| (vect_duplicate_loop, vect_copy_phi_nodes) |
| (vect_rename_variables_in_loop, vect_tree_split_edge) |
| (vect_update_initial_conditions_of_duplicated_loop): |
| (vect_tree_duplicate_loop, vect_build_symbl_bound): New functions. |
| (new_loop_vec_info): Initialize the new field loop_vec_info: |
| symb_numb_of_iters. |
| * tree-vectorizer.h (loop_vec_info: symb_numb_of_iters): Added. |
| (LOOP_VINFO_SYMB_NUM_OF_ITERS): Added. |
| * cfgloopmanip.c (duplicate_loop): Made non-static. |
| * tree-ssa-loop-manip.c (collect_defs): Made non-static. |
| (allocate_new_names): Made non-static. Added option to allocate |
| for original loop or not. |
| (rename_op): Made non-static. Added input check. |
| (rename_variables_in_bb): Made mpm-static. |
| original loop were also renamed. |
| (free_new_names): release_ssa_name only if defs of original |
| loop were also renamed. |
| * cfgloop.h (duplicate_loop): Declare. |
| * tree-flow.h (collect_defs, allocate_new_names, rename_op) |
| (rename_variables_in_bb, free_new_names): Declare. |
| |
| 2004-05-20 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev, |
| first_iteration_non_satisfying_ev_ev): Check the assumptions returned |
| by number_of_iterations_cond. |
| |
| 2004-05-13 Devang Patel <dpatel@apple.com> |
| |
| * cfgloop.c (get_loop_body_in_bfs_order): New. |
| (flow_loop_exit_edges_find): Set EDGE_LOOP_EXIT. |
| * cfgloop.h (get_loop_body_in_bfs_order): New. |
| |
| 2004-05-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * expr.c (expand_expr_real_1): Use REF_ORIGINAL information |
| from INDIRECT_REFS. |
| * tree-flow.h (force_gimple_operand, rewrite_address_base): Declare. |
| * tree-ssa-loop-ivopts.c (force_gimple_operand): Expand. |
| (add_address_candidates): Add candidates with constant offset |
| stripped. |
| (idx_remove_ssa_names, unshare_and_remove_ssa_names, |
| rewrite_address_base): New. |
| (rewrite_use_address): Use rewrite_address_base. |
| * tree-into-ssa.c (register_new_def): Remove unused code. |
| * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop): |
| Handle invariants correctly. |
| * tree-cfg.c (tree_split_block): Do not modify the statements. |
| * tree.h (REF_ORIGINAL): New macro. |
| |
| 2004-05-12 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.c (chrec_evaluate): Use the type of the chrec |
| instead of integer_type_node when folding operations. |
| (chrec_apply): Factor chrec_type calls. |
| (chrec_eval_next_init_cond): Removed. |
| (chrec_convert): Don't propagate overflows introduced by convert. |
| * tree-chrec.h (chrec_eval_next_init_cond): Removed. |
| * tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev, |
| first_iteration_non_satisfying_ev_ev): Use number_of_iterations_cond |
| instead of computing the loop counts. |
| |
| 2004-05-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-invariant.c (find_invariant_insn): Handle trapping insns |
| correctly. |
| |
| 2004-05-10 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.h (build_chrec_top_type): Disabled, return chrec_top. |
| * tree-scalar-evolution.c (first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev): Use the type of the chrec |
| instead of integer_type_node when folding operations. |
| (number_of_iterations_to_overflow): New. |
| (first_iteration_non_satisfying_ev_ev): Implement some cases. |
| (set_nb_iterations_in_loop): Return chrec_top on overflow. |
| (follow_ssa_edge_in_rhs): Handle type conversions "a = (type) rhs". |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Convert the result of find_loop_niter_by_eval to the same type as niter |
| before comparing. |
| |
| 2004-05-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-iv.c (determine_max_iter, shorten_into_mode, |
| iv_number_of_iterations): Handle constants correctly. |
| * rtl.h (get_mode_bounds): Declaration changed. Duplicate declaration |
| removed. |
| * stor-layout.c (get_mode_bounds): Return a constant suitable for |
| a target mode. |
| |
| 2004-05-06 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.h (build_chrec_top_type): Check that the type has |
| min and max values before taking their values. |
| |
| 2004-05-06 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * tree-chrec.h (build_chrec_top_type): New. |
| * tree-chrec.c (chrec_fold_multiply_ival_cst, |
| chrec_fold_multiply_ival_ival, chrec_fold_plus_1): Use |
| build_chrec_top_type instead of returning chrec_top. |
| |
| * tree-data-ref.c (dump_data_dependence_relation): Don't dump |
| direction per subscript. |
| (analyze_array): Use an extra boolean parameter for the access |
| mode: read or write. |
| (analyze_array_top, finalize_ddr_dependent): New. |
| (compute_direction_vector, set_all_subscripts_to): Removed. |
| (initialize_data_dependence_relation): The dependence relation |
| is unknown when one of the references base name is NULL_TREE. |
| (subscript_dependence_tester, build_classic_dist_vector, |
| build_classic_dir_vector, compute_affine_dependence): |
| Use finalize_ddr_dependent. |
| (build_classic_dir_vector): When one of the directions is |
| dir_star, the subscript coupling cannot deduce independence. |
| (compute_all_dependences): Renamed compute_rw_wr_ww_dependences. |
| (compute_rw_wr_ww_dependences): Don't compute read-read |
| relations. Don't compute the reversed dependence relation. |
| (find_data_references_in_loop): Use analyze_array_top when the |
| MODIFY_EXPR contains a VUSE/VDEF that is not an ARRAY_REF. |
| * tree-data-ref.h (data_reference): Add a field is_read. |
| (DR_IS_READ): New. |
| (DDR_SUBSCRIPTS_VECTOR_FINALIZE): Removed. |
| (analyze_array): Change declaration. |
| * tree-vectorizer.c (vect_analyze_data_refs): Adapt the use of |
| analyze_array to the new prototype. Pass in the read or write |
| mode. |
| |
| 2004-04-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-niter.c: New file. |
| * Makefile.in (tree-ssa-loop-niter.o): New. |
| * cfgloop.h (struct loop): Add bounds field. |
| * df.c (df_reg_clobber_gen): Removed. |
| (df_bb_rd_local_compute, df_insn_refs_record, df_rd_local_compute): |
| Make more effective for hard regs. |
| * loop-invariant.c (check_maybe_invariant, find_defs, |
| find_invariant_insn): Handle hard regs. |
| * tree-chrec.c (chrec_fold_plus_poly_poly, chrec_fold_multiply, |
| chrec_fold_multiply, chrec_merge): Handle types correctly. |
| (chrec_convert): Use count_ev_in_wider_type. |
| * tree-chrec.h (count_ev_in_wider_type): Declare. |
| * tree-flow.h (struct tree_niter_desc): Moved from |
| tree-ssa-loop-ivopts.c. |
| (number_of_iterations_cond, number_of_iterations_exit, |
| loop_niter_by_eval, find_loop_niter_by_eval, |
| estimate_numbers_of_iterations, can_count_iv_in_wider_type, |
| free_numbers_of_iterations_estimates): Declare. |
| * tree-scalar-evolution.c (count_ev_in_wider_type, scev_reset, |
| simple_iv): New. |
| (number_of_iterations_in_loop): Check that the exit condition |
| is tested in every iteration. |
| * tree-scalar-evolution.h (scev_reset, simple_iv): Declare. |
| * tree-ssa-loop-ivcanon.c (MAX_ITERATIONS_TO_TRACK, |
| chain_of_csts_start, get_base_for, get_val_for, |
| loop_niter_by_eval, find_loop_niter_by_eval): Moved to |
| tree-ssa-loop-niter.c. |
| * tree-ssa-loop-ivopts.c (struct tree_niter_desc): Moved to |
| tree-flow.h. |
| (force_gimple_operand): Accept a variable for the target of |
| the assignment. |
| (create_iv, rewrite_use_nonlinear_expr, |
| rewrite_use_address, rewrite_use_compare, |
| rewrite_use_outer): Changed due to this. |
| (tree_ssa_iv_optimize_init): Call estimate_numbers_of_iterations. |
| (get_var_def): Removed. |
| (find_givs_in_stmt_scev): Use simple_iv. |
| (inverse, number_of_iterations_cond): Moved to tree-ssa-loop-niter.c. |
| (determine_number_of_iterations): Use number_of_iterations_exit. |
| (idx_find_step, find_interesting_uses_address): Use |
| can_count_iv_in_wider_type. |
| (force_var_cost): Determine the costs more precisely. |
| (tree_ssa_iv_optimize_finalize): Call |
| free_numbers_of_iterations_estimates. |
| (tree_ssa_iv_optimize_loop): Call scev_reset. |
| * varasm.c (force_const_mem): Set MEM_NOTRAP_P flag. |
| * config/rs6000/rs6000.c (rs6000_emit_move): Set MEM_NOTRAP_P flag. |
| |
| 2004-04-27 Sebastian Pop <pop@cri.ensmp.fr> |
| |
| * lambda-code.c (build_int_cst): Moved... |
| * tree-data-ref.c (int_cst_value): Moved... |
| * tree-ssa-loop-ivopts.c (int_cst_value, build_int_cst): Moved... |
| * tree.c (int_cst_value, build_int_cst): ...here. |
| * tree.h (int_cst_value, build_int_cst): Declare. |
| |
| * tree-chrec.h (is_chrec, symbolic_parameter_expr_p): Removed. |
| |
| * tree-chrec.c (evolution_function_is_affine_multivariat): Check that |
| the left part is a polynomial before taking its variable. |
| |
| * tree-elim-check.c (prove_truth_value): Update the use of |
| tree_is_* functions. |
| * tree-fold-const.h (tree_is_ge, tree_is_gt, tree_is_le, tree_is_lt, |
| tree_is_eq, tree_is_ne): Return true when decidable, and use a |
| parameter for returning the result. |
| |
| * tree-scalar-evolution.c (types_forbid_solutions_p): Removed. |
| (first_iteration_non_satisfying_noev_noev, |
| first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev): Update the use of |
| tree_is_* functions. Use no_evolution_in_loop_p instead of |
| evolution_function_is_constant_p. Extends the analyzer to |
| symbolic loop counts. |
| (first_iteration_non_satisfying): Factorize code. |
| |
| 2004-04-26 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * config/rs6000/altivec.md: Fix merge problem. |
| |
| 2004-04-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from tree-ssa branch (lno-merge-20040425). |
| |
| 2004-04-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (force_gimple_operand): Strip useless type |
| conversions. |
| (number_of_iterations_cond): Fix typo. |
| (rewrite_use_address): Fix. |
| |
| 2004-04-23 Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-loop-linear.c (linear_transform_loops): Add invariants array. |
| * lambda-code.c (gcc_tree_to_linear_expression): Change arguments |
| to include invariants array, and an int, instead of a bool. |
| Handle invariants. |
| (invariant_in_loop): New function. |
| (gcc_loop_to_lambda_loop): Add support for invariants as bounds, |
| and NE_EXPR tests. |
| (gcc_loopnest_to_lambda_loopnest): Add invariants argument, |
| init the invariants array, and pass it along to gcc_loop_to_lambda_loop. |
| (lle_to_gcc_expression): Handle invariants and simple linear offsets. |
| (lambda_loopnest_to_gcc_loopnest): Ditto. |
| Also use the right test if the step is negative. |
| |
| 2004-04-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (instantiate_parameters_1): Handle changed |
| semantics of analyze_scalar_evolution. Split off from ... |
| (instantiate_parameters): ... here. |
| |
| 2004-04-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (analyze_scalar_evolution_1): Keep |
| loop invariants in symbolic form. Use |
| compute_scalar_evolution_in_loop for expressions defined in subloops. |
| (chrec_contains_symbols_defined_in_loop): Check for non-strict |
| nestedness. |
| (compute_scalar_evolution_after_loop): Renamed back to |
| compute_overall_effect_of_inner_loop. |
| (follow_ssa_edge_inner_loop_phi, interpret_loop_phi): |
| Changed due to the renaming. |
| (get_scalar_evolution): Return chrec_not_analyzed_yet for complicated |
| expressions. |
| (compute_scalar_evolution_in_loop): Compute the evolution of the |
| expression returned by compute_overall_effect_of_inner_loop. |
| |
| 2004-04-22 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-elim-check.c (prove_truth_value_gt, prove_truth_value_lt, |
| prove_truth_value_le, prove_truth_value_ge, prove_truth_value_eq, |
| prove_truth_value_ne): Resurrect. |
| (prove_truth_value_symbolic): New. Disabled for the moment. |
| (prove_truth_value): Use it when this function fails on unknown. |
| (try_eliminate_check): Factorize the code. |
| * tree-scalar-evolution.c (compute_scalar_evolution_after_loop): |
| Fix the description comment. |
| |
| 2004-04-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (linear_transform_loops): Prototype changed. |
| * tree-vectorizer.h (vectorize_loops): Ditto. |
| * tree-loop-linear.c (linear_transform_loops): Remove unused |
| argument. |
| * tree-vectorizer.c (vectorize_loops): Ditto. |
| * tree-scalar-evolution.c (scalar_evolution_info): Type changed |
| to hash table. |
| (new_scev_info_str): Use xmalloc instead of ggc_alloc. |
| (hash_scev_info, eq_scev_info, del_scev_info, |
| gather_stats_on_scev_database_1): New functions. |
| (find_var_scev_info, dump_chrecs_stats, gather_stats_on_scev_database, |
| scev_initialize, scev_finalize): Work with hash table instead of a |
| list. |
| (scev_elim_checks, scev_vectorize): Do not pass unused arguments to |
| functions. |
| |
| |
| 2004-04-21 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.c (chrec_apply): Fail on chrec_top when the chrec |
| contains symbols defined in the inner loop. Otherwise perform |
| the computation with symbols. |
| (no_evolution_in_loop_p): Same. Moved from here... |
| * tree-chrec.h (no_evolution_in_loop_p): ...there. Define it inline. |
| (chrec_contains_symbols_defined_in_loop): Declare. |
| * tree-scalar-evolution.c (nb_set_scev, nb_get_scev): New counters. |
| (set_scalar_evolution, get_scalar_evolution): Count the number of calls. |
| (chrec_contains_symbols_defined_in_loop): Defined. |
| (compute_scalar_evolution_after_loop, first_iteration_non_satisfying_1, |
| analyze_scalar_evolution_in_loop): Initialize boolean values. |
| (dump_chrecs_stats): Dump the get/set counters. |
| |
| 2004-04-21 Sebastian Pop <sebastian.pop@ensmp.fr> |
| Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (compute_scalar_evolution_in_loop): |
| Use superloop_at_depth. |
| (analyze_scalar_evolution): Keep a symbolic form instead of |
| chrec_top. |
| |
| 2004-04-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (instantiate_parameters): Handle casts |
| correctly. |
| * tree-ssa-loop-manip.c (add_exit_phis_edge): Do not add unnecessary |
| phi nodes. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Do not call create_preheaders. |
| |
| 2004-04-20 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-scalar-evolution.c (scev_info_str, new_scev_info_str, |
| find_var_scev_info, set_scalar_evolution, get_scalar_evolution): |
| Store a single scalar evolution per definition. |
| (compute_overall_effect_of_inner_loop): Renamed |
| compute_scalar_evolution_after_loop. |
| (compute_scalar_evolution_in_loop): New. |
| (analyze_scalar_evolution): Use the helper function. |
| (analyze_scalar_evolution_1): Helper recursive function. |
| Avoid multiple set/get in the scev database when recursively called. |
| |
| 2004-04-20 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (vect_create_index_for_array_ref): Use create_iv |
| instead of creating iv's from scratch. |
| (vect_transform_loop_bound): Likewise. |
| |
| 2004-04-20 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.c (chrec_fold_multiply_ival_cst, |
| chrec_fold_multiply_ival_ival, chrec_fold_plus_1): When the fold |
| resulted in an overflow, conservatively answer chrec_top. |
| |
| 2004-04-20 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.c (chrec_fold_multiply_ival_cst): Compute the min |
| and max on the multiplication result. |
| (chrec_fold_negate): Removed. |
| * tree-chrec.h (chrec_fold_negate): Removed. |
| * tree-scalar-evolution.c (interpret_rhs_modify_expr): |
| Use chrec_fold_minus instead of chrec_fold_negate. |
| |
| 2004-04-20 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.h (evolution_function_is_constant_p): Be careful. |
| * tree-data-ref.c (analyze_siv_subscript_affine_affine): Renamed |
| analyze_subscript_affine_affine. Exchange the CHREC_VARIABLEs for |
| overlaps. |
| (analyze_miv_subscript): Use directly analyze_subscript_affine_affine, |
| and avoid the call to evolution_function_is_constant_p. |
| |
| 2004-04-20 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.c (chrec_apply): Fail on chrec_top for symbolic chrecs. |
| (no_evolution_in_loop_p): Return false when non decidable, use |
| a parameter for returning the result. |
| * tree-chrec.h (no_evolution_in_loop_p): Modify its declaration. |
| * tree-scalar-evolution.c (add_to_evolution, multiply_evolution): |
| Avoid the use of no_evolution_in_loop_p. |
| (add_to_evolution_1, multiply_evolution_1): New. |
| (multiply_by_expr_the_loop_evolution, add_expr_to_loop_evolution, |
| build_exponential_evolution_in_loop, |
| build_polynomial_evolution_in_loop): Removed. |
| (first_iteration_non_satisfying_1, analyze_scalar_evolution_in_loop): |
| Modify the use of no_evolution_in_loop_p. |
| * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev, |
| find_givs_in_stmt_scev): Check that the result of scev analysis |
| does not contain symbols. |
| |
| 2004-04-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p, |
| contains_abnormal_ssa_name_p): New functions. |
| (find_bivs, find_bivs, find_givs_in_stmt_scev): |
| Handle ssa names occuring in abnormal phis. |
| * tree-ssa-loop-im.c (movement_possibility): Ditto. |
| |
| 2004-04-18 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c (create_index_for_array_ref): Remove code under |
| #ifdef POINTER_ARITHMETIC. |
| (vect_create_data_ref): Likewise. Support array addressing |
| instead of pointer arithmetic in vectorized code. |
| |
| 2004-04-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from tree-ssa branch: |
| |
| 2004-03-25 Diego Novillo <dnovillo@redhat.com> |
| * tree-ssa-alias.c (struct alias_info): Change type of field |
| 'num_references' to varray_type. Update all users. |
| |
| 2004-04-15 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-into-ssa.c (struct mark_def_sites_global_data): Change type of |
| names_to_rename to sbitmap. |
| (insert_phi_nodes_for, insert_phi_nodes_1, insert_phi_nodes): |
| Allocate worklist globally. |
| (ssa_mark_def_sites_initialize_block, ssa_mark_phi_uses, |
| ssa_mark_def_sites, ssa_rewrite_initialize_block, |
| ssa_rewrite_phi_arguments, ssa_rewrite_stmt, rewrite_ssa_into_ssa): |
| Use sbitmaps instead of bitmaps. |
| |
| 2004-04-15 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-scalar-evolution.c (instantiate_parameters): Don't keep |
| symbols after instantiation. Fully instantiate parameters, |
| or fail on chrec_top. |
| |
| 2004-04-15 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-fold-const.h (chrec_merge_types): Move it... |
| * tree-chrec.c (multiply_int, divide_int, add_int, substract_int, |
| integer_divides_p, lcm, gcd, update_initial_condition_to_origin, |
| remove_initial_condition, ): Removed. |
| (evolution_function_in_loop_num): Renamed into |
| hide_evolution_in_other_loops_than_loop. |
| (hide_evolution_in_loop, hide_evolution_in_other_loops_than_loop): New. |
| (chrec_merge_types): ... here. |
| (chrec_merge): Answer chrec_top on EXPONENTIAL_CHREC. |
| (ziv_subscript_p, siv_subscript_p, analyze_ziv_subscript, |
| analyze_siv_subscript, analyze_siv_subscript_cst_affine, |
| analyze_siv_subscript_affine_cst, analyze_siv_subscript_affine_affine, |
| chrec_steps_divide_constant_p, analyze_miv_subscript, |
| analyze_overlapping_iterations): Moved from here... |
| * tree-chrec.h (evolution_function_in_loop_num): Rename declaration. |
| (hide_evolution_in_other_loops_than_loop, hide_evolution_in_loop): New. |
| (analyze_overlapping_iterations): No longer extern. |
| |
| * tree-data-ref.c (ziv_subscript_p, siv_subscript_p, |
| analyze_ziv_subscript, |
| analyze_siv_subscript, analyze_siv_subscript_cst_affine, |
| analyze_siv_subscript_affine_cst, analyze_siv_subscript_affine_affine, |
| chrec_steps_divide_constant_p, analyze_miv_subscript, |
| analyze_overlapping_iterations): ... there. |
| (initialize_data_dependence_relation, |
| access_functions_are_affine_or_constant_p): Moved down. |
| (compute_all_dependences): Moved down. Now is static. |
| (build_classic_dir_vector): New. |
| (build_classic_dist_vector): |
| (find_data_references): Renamed find_data_references_in_loop. |
| Now is static. |
| (compute_data_dependences_for_loop): New. |
| (analyze_all_data_dependences): Use compute_data_dependences_for_loop. |
| * tree-data-ref.h (dd_info_available): Don't declare it extern. |
| |
| * tree-scalar-evolution.c (dd_info_available): Declare static. |
| (select_outer_and_current_evolutions): Removed. |
| (stats_*): Move the static variables in the chrec_stats structure. |
| (chrec_stats): New structure. |
| (first_iteration_non_satisfying_1): In the multivariate case, |
| don't forget that the outer loops can change the number of iterations. |
| (cannot_analyze_loop_nb_iterations_yet): Removed. |
| (follow_ssa_edge_inner_loop_phi): Refine the case where the |
| evolution of the inner loop is symbolic. |
| (number_of_iterations_in_loop): Factor the end of the cases. |
| |
| * tree-dg.c (classic_dist, classic_dir): Declared static. |
| (dg_delete_graph): Delete the classic_dist and classic_dir. |
| (dg_create_graph): Adapt to use compute_data_dependences_for_loop. |
| (gate_ddg, gate_delete_ddg, pass_ddg, pass_delete_ddg): Moved in |
| tree-scalar-evolution.c. |
| * tree-dg.h (dg_create_graph): Pass in struct loops. |
| |
| 2004-04-15 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-data-ref.h (struct data_reference): New field "aux". |
| * tree-vectorizer.h (aligned_access_p, unknown_alignment_for_access_p): |
| New functions. |
| (DR_MISLAIGNMENT): New macro, for accessing the new 'aux' field in |
| data_reference. |
| * tree-vectorizer.c: (vect_analyze_data_refs_alignment): New function. |
| (vect_compute_data_refs_alignment): New function. |
| (vect_compute_data_ref_alignment): New function. |
| (vect_enhance_data_refs_alignment): New function. |
| (vect_force_dr_alignment_p): New function. |
| (vect_align_data_ref): Use new functions aligned_access_p and |
| vect_force_dr_alignment_p. |
| (vect_analyze_data_ref_access): Alignment related checks moved to new |
| functions that deal with alignment. |
| (vect_analyze_data_refs): Likewise. |
| (vect_analyze_loop): Call vect_analyze_data_refs_alignment. |
| |
| 2004-04-15 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-invariant.c (may_assign_reg_p): Prevent unused parameter |
| warning. |
| * tree-ssa-loop-manip.c (find_use_block, find_use_blocks, |
| defined_inside_loop_p): Removed. |
| (add_exit_phis_var, add_exit_phis, rewrite_into_loop_closed_ssa): |
| Make more efficient. |
| (find_uses_to_rename_use, find_uses_to_rename_stmt, |
| find_uses_to_rename): New functions. |
| |
| 2004-04-15 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (compute_global_livein): Declare. |
| * tree-into-ssa.c (struct def_blocks_d): New field |
| phi_blocks. |
| (compute_global_livein): Export. |
| (set_def_block): Record phi_blocks. |
| (get_def_blocks_for): Allocate phi_blocks. |
| (mark_def_sites): Changed due to set_def_block change. |
| (ssa_mark_def_sites_initialize_block, ssa_mark_def_sites): |
| Make virtual defs be kills. |
| (insert_phi_nodes_for): Handle old phi nodes more efficiently. |
| (def_blocks_free): XFREE the bitmaps. |
| * tree-ssa-loop-manip.c (add_exit_phis_use, add_exit_phis_stmt): |
| Removed. |
| (get_loops_exits): Return bitmap. |
| (add_exit_phis_var, find_use_block, find_use_blocks, |
| defined_inside_loop_p): New functions. |
| (add_exit_phis): Use add_exit_phis_var. |
| (rewrite_into_loop_closed_ssa): Reorganize. |
| * tree-ssa-loop.c (pass_loop): Add garbage collection. |
| |
| 2004-04-14 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-chrec.c (chrec_convert): Handle extending correctly. |
| * tree-scalar-evolution.c (set_scev_keep_symbolic): Removed. |
| (set_scalar_evolution): Do not use it. |
| (get_scalar_evolution): Only handle ssa names and constants. |
| (interpret_loop_phi): When interpreting subloop, compute the |
| evolution in outer loop afterwards. |
| (analyze_scalar_evolution_in_loop): New. |
| * tree-scalar-evolution.h (analyze_scalar_evolution_in_loop): Declare. |
| * tree-ssa-loop-ivopts.c: Include tree-fold-const.h, tree-chrec.h |
| and tree-scalar-evolution.h. |
| (tree_ssa_iv_optimize_init): Call scev_initialize. |
| (determine_biv_step, find_bivs, mark_bivs, |
| find_givs_in_stmt): Use scev analyzer. |
| (find_givs_in_stmt_scev): New function. |
| (find_induction_variables): Remove TODO comment. |
| (force_var_cost): Test for TREE_INVARIANT, not for |
| is_gimple_min_invariant. |
| (find_optimal_iv_set): Update comment. |
| (tree_ssa_iv_optimize_finalize): Call scev_finalize. |
| |
| 2004-04-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa.c (raise_value): Removed. |
| (get_eq_name, check_phi_redundancy): New. |
| (kill_redundant_phi_nodes): Use standard algorithm. |
| |
| 2004-04-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-manip.c (allocate_new_names): Use duplicate_ssa_name. |
| Preserve SSA_NAME_OCCURS_IN_ABNORMAL_PHI flag. |
| |
| 2004-04-10 Daniel Berlin <dberlin@dberlin.org> |
| |
| * lambda-code.c (lambda_loopnest_transform): Add comments. |
| |
| 2004-04-09 David Edelsohn <edelsohn@gnu.org> |
| |
| Backport from mainline: |
| * config/rs6000/t-linux64 (bispecs): Don't add -mlong-double-128 for |
| 32-bit builds when defaulting to 32-bit. |
| |
| 2004-04-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-iv.c (iv_number_of_iterations): Sign extend the constant value |
| appropriately for the target mode. |
| * tree-fold-const.c (tree_fold_gcd): Make more efficient. |
| * tree-ssa-loop-manip.c (add_exit_phis_use): Do not add unnecessary |
| phis. |
| (rewrite_into_loop_closed_ssa): Fix comment. |
| |
| 2004-04-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfgrtl.c (purge_dead_edges): Clean the EDGE_ABNORMAL_CALL flags. |
| * loop-iv.c (iv_number_of_iterations): Handle the case when we prove |
| that the loop does not roll. |
| * opts.c (decode_options): Enable -floop-optimize2 and |
| -ftree-loop-optimize by default. |
| * tree-cfg.c (factored_computed_goto_label, |
| factored_computed_goto): Removed. |
| (factor_computed_gotos): Do not record them. |
| (disband_implicit_edges): Do not unfactor computed jumps. |
| * tree-ssa-loop-ivopts.c (force_gimple_operand): Give correct types |
| to temporary variables. |
| (idx_force_simple, create_iv, rewrite_use_nonlinear_expr, |
| rewrite_use_address, rewrite_use_compare, rewrite_use_outer): |
| Changed due to force_gimple_operand change. |
| (find_bivs): Handle ill-typed assignments correctly. |
| |
| 2004-04-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * passes.c (rest_of_compilation): Enable rest_of_handle_loop2 by |
| flag_loop_optimize2. |
| * tree-scalar-evolution.c (scev_initialize): Find loop exits. |
| |
| 2004-04-02 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (rewrite_use_outer): Do not remove ssa names |
| prematurely. |
| |
| 2004-04-01 Mostafa Hagog <mustafa@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * config/rs6000/rs6000.md ("*ctrsi_internal1", "*ctrsi_internal2", |
| "*ctrdi_internal1", "*ctrdi_internal2", "*ctrsi_internal3", |
| "*ctrsi_internal4", "*ctrdi_internal3", "*ctrdi_internal4", |
| "*ctrsi_internal5", "*ctrsi_internal6", "*ctrdi_internal5", |
| "*ctrdi_internal6"): Replace register_operand with nonimmediate_operand |
| |
| 2004-03-31 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-into-ssa.c (ssa_rewrite_initialize_block): Update |
| SSA_NAME_OCCURS_IN_ABNORMAL_PHI. |
| (ssa_rewrite_phi_arguments): Ditto. |
| * tree-ssa.c (kill_redundant_phi_nodes): Prevent replacing |
| ssa names that occur in abnormal phi nodes. |
| * tree-ssa-loop-ivopts.c (get_var_def): Handle non-invariant |
| non-ssa name operands. |
| * java/decl.c (java_init_decl_processing): Initialize |
| long_integer_type_node. |
| |
| 2004-03-31 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (idx_find_step): Prevent misscompilation |
| in case the index overflows. |
| |
| 2004-03-31 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>, |
| Dorit Naishlos <DORIT@il.ibm.com> |
| |
| * tree-scalar-evolution.c (dump_chrecs_stats): Prevent format warning. |
| |
| 2004-03-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * lambda-code.c (gcc_loop_to_lambda_loop): Changed due to changes in |
| scev. |
| * tree-data-ref.c (analyze_array_indexes, analyze_array): Ditto. |
| * tree-elim-check.c (try_eliminate_check): Ditto. |
| * tree-vectorizer.c (vect_analyze_scalar_cycles): Ditto. |
| * tree-chrec.c (chrec_fold_plus_1): Handle exponential + peeled chrec |
| correctly. Use correct types. |
| (chrec_fold_negate): New. |
| (chrec_merge): Short-circuit the case when the merged values are |
| identical. |
| (no_evolution_in_loop_p): Handle chrec_top correctly. |
| (chrec_convert): Handle polynomial and exponential chrecs corectly. |
| (chrec_type): Use TREE_TYPE. |
| * tree-chrec.h (chrec_fold_negate): Declare. |
| * tree-phinodes.c (create_phi_node): Do not initialize PHI_MARKED. |
| * tree-scalar-evolution.c: Handle evolutions analysed from different |
| loops correctly. Do not use PHI_MARKED. Use correct types. |
| * tree-scalar-evolution.h (analyze_scalar_evolution, |
| instantiate_parameters): Declaration changed. |
| (struct scev_info_str): Moved to tree-scalar-evolution.c. |
| (MI_VAR, MI_INNER_LOOPS_CHREC, MI_OUTER_LOOPS_CHREC): Removed. |
| (new_scev_info_str): Moved to tree-scalar-evolution.c. |
| * tree-ssa-loop-manip.c (add_exit_phis_use): Just add exit phis for |
| superloops of the loop containing the definition. |
| * tree.h (PHI_MARKED): Removed. |
| (tree_phi_node): Field 'marked' removed. |
| |
| 2004-03-30 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-chrec.c (chrec_contains_symbols): Factorize conditions, |
| chrec_not_analyzed_yet is a NULL_TREE. |
| * tree-chrec.h (prove_truth_value_{lt, le, ge, ne, gt, eq}.c): |
| Removed. |
| (evolution_function_is_multivariate, |
| evolution_function_is_peeled_affine_p): New. |
| * tree-data-ref.c (analyze_all_data_dependences): Dump some |
| statistics on the data dependences. |
| * tree-elim-check.c (not_code, prove_truth_value): New. |
| (try_eliminate_check): Use prove_truth_value. |
| * tree-fold-const.h (tree_is_ne): New. |
| * tree-scalar-evolution.c (types_forbid_solutions_p, |
| first_iteration_non_satisfying_noev_noev, |
| first_iteration_non_satisfying_noev_ev, |
| first_iteration_non_satisfying_ev_noev, |
| first_iteration_non_satisfying_ev_ev, |
| first_iteration_non_satisfying_1, |
| first_iteration_non_satisfying, |
| gather_stats_on_scev_database): New functions. |
| (nb_iterations_less, nb_iterations_eq, nb_iterations_ne): Removed. |
| (set_nb_iterations_in_loop): Be more careful on overflow. |
| (number_of_iterations_in_loop): Use first_iteration_non_satisfying. |
| * tree-scalar-evolution.h (first_iteration_non_satisfying, |
| gather_stats_on_scev_database): Declared. |
| |
| 2004-03-30 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (iv_value): Use correct type. |
| (may_eliminate_iv): Add a fixme comment. |
| |
| 2004-03-29 Devang Patel <dpatel@apple.com> |
| |
| * tree-flow.h (tree_ssa_loop_version): Add new parameter, basic_block *. |
| (update_lv_condition): New. |
| * tree-ssa-loop-manip.c (copy_phi_nodes): nreverse copied phi nodes list |
| to ensure that phi nodes remain in same order. |
| (lv_update_pending_stmts): Do not nreverse pending list. |
| (lv_adjust_loop_header_phi): Walk two phi nodes list in parallel. |
| (tree_ssa_loop_version): Now condition_bb is input parameter. |
| (update_lv_condition): New. |
| (test_loop_versioning): Use update_lv_condition. |
| * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update function |
| tree_ssa_loop_version () call by adding 4th parameter. |
| |
| 2004-03-29 Richard Guenther <rguenth@tat.physik.uni-tuebingen.de> |
| |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Fix unused vars warning with -disable-checking. |
| * df.c (df_reg_def_chain_create, df_reg_use_chain_create): Ditto. |
| |
| 2004-03-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags. |
| * tree-flow-inline.h (bsi_after_labels): New. |
| * tree-flow.h (struct ssa_name_ann_d): Add need_phi_state field. |
| (bsi_after_labels, rewrite_ssa_into_ssa, duplicate_ssa_name, |
| tree_ssa_dce_no_cfg_changes, rewrite_into_loop_closed_ssa, |
| verify_loop_closed_ssa, compute_phi_arg_on_exit): Declare. |
| (tree_loop_optimizer_init): Declaration changed. |
| * tree-into-ssa.c (struct mark_def_sites_global_data): Add |
| names_to_rename and ssa_names fields. |
| (insert_phi_nodes, get_value_for, set_value_for, set_def_block, |
| set_livein_block, insert_phi_nodes_1, insert_phi_nodes_for, |
| register_new_def, get_reaching_def, rewrite_into_ssa): Handle |
| rewriting of ssa names. |
| (get_phi_state, set_phi_state, ssa_mark_def_sites_initialize_block, |
| ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name, |
| ssa_rewrite_initialize_block, ssa_rewrite_phi_arguments, |
| ssa_rewrite_finalize_block, ssa_rewrite_stmt, rewrite_ssa_into_ssa): |
| New functions. |
| * tree-scalar-evolution.c (scev_initialize): Changed due to |
| tree_loop_optimizer_init change. |
| * tree-ssa-dce.c (perform_tree_ssa_dce, perform_tree_ssa_dce, |
| tree_ssa_cd_dce): Handle no cfg changes mode. |
| (tree_ssa_dce_no_cfg_changes): Resurrect. |
| * tree-ssa-loop-im.c (move_computations): Preserve loop closed ssa. |
| * tree-ssa-loop-ivopts.c (struct version_info): Field outermost_usage |
| removed. |
| (update_outermost_usage, find_outermost_usage): Removed. |
| (ip_normal_pos): Fix. |
| (tree_ssa_iv_optimize_init): Do not call find_outermost_usage. |
| (find_interesting_uses_stmt): Use loop closed ssa form. |
| (find_interesting_uses_outside): New. |
| (find_interesting_uses): Use it. |
| (determine_iv_cost): Prefer IP_NORMAL to IP_END. |
| (split_loop_exit_edge, protect_loop_closed_ssa_form_use, |
| protect_loop_closed_ssa_form, compute_phi_arg_on_exit): New functions. |
| (rewrite_use_outer): Preserve loop closed ssa form. |
| (tree_ssa_iv_optimize): Verify loop closed ssa form. |
| * tree-ssa-loop-manip.c (mfb_redirect_exit_edges): Removed. |
| (free_new_names): Free old ssa names. |
| (extend_exit_phi_nodes, add_exit_phis_edge, |
| add_exit_phis_use, add_exit_phis_stmt, add_exit_phis, |
| get_loops_exits, rewrite_into_loop_closed_ssa, |
| check_loop_closed_ssa_use, check_loop_closed_ssa_stmt, |
| verify_loop_closed_ssa): New functions. |
| (tree_duplicate_loop_to_header_edge): Use loop closed ssa form. |
| (tree_ssa_loop_version): Handle irreducible loops correctly. |
| * tree-ssa-loop.c (tree_loop_optimizer_init): Create loop closed ssa |
| form. |
| (tree_ssa_loop_opt, copy_loop_headers): Changed due to |
| tree_loop_optimizer_init change. |
| |
| 2004-03-25 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-data-ref.c (subscript_dependence_tester): Removed. |
| (build_classic_dist_vector): Implement the subscript tester: |
| test for different distances carried by the same loop. |
| |
| 2004-03-23 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-cfg.c (print_loop): Modify dump formatting. |
| (debug_loop_ir): Renamed tree_debug_loops. |
| (tree_debug_loop): New. |
| * tree-chrec.c: Restructure for handling more carefully types. |
| * tree-chre.h: Same. |
| * tree-fold-const.h: Same. |
| * tree-fold-const.c: Same. |
| * tree-scalar-evolution.c: Same. |
| * tree-scalar-evolution.h: Same. |
| * tree-data-ref.c (dump_data_dependence_relation): Remove the |
| dump of the base_name because it produces too many conflicts in |
| the diffs of the testsuite. |
| (compute_all_dependences): Use pointers to the dependence_relations varray. |
| (int_cst_value, build_classic_dist_vector): New. |
| (find_data_references): Use pointers to datarefs varray. |
| (analyze_all_data_dependences): Compute the classic distances. |
| * tree-data-ref.h: Declare functions. |
| * tree-dg.c (dg_create_graph): Update the uses of the data-ref functions. |
| * tree-flow.h (debug_loop_ir): Renamed to tree_debug_loops. |
| (tree_debug_loop): Declare. |
| |
| 2004-03-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (tree_ssa_dce_no_cfg_changes): Declaration removed. |
| * tree-ssa-dce.c (remove_dead_stmt): Invalidate dominators if we |
| thread the edge. |
| (tree_ssa_dce_no_cfg_changes): Removed. |
| (perform_tree_ssa_dce, tree_ssa_dce, perform_tree_ssa_dce): Remove |
| no cfg changes mode. |
| * tree-ssa-loop-ivopts.c (force_gimple_operand): Handle overflowed |
| constants. |
| (find_interesting_uses_outer_or_nonlin): New. |
| (find_interesting_uses_op, find_interesting_uses_outer): Use it. |
| (find_interesting_uses_cond, idx_record_use, |
| find_interesting_uses_stmt): Changed due to find_interesting_uses_op |
| change. |
| (create_new_iv, remove_statement, rewrite_use_nonlinear_expr, |
| rewrite_use_outer, tree_ssa_iv_optimize): Handle direct removal of |
| unused ivs. |
| (remove_unused_ivs): New. |
| (tree_ssa_iv_optimize_loop): Call it. |
| |
| 2004-03-23 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (SCEV_H): New. |
| (tree-ssa-loop-ivcanon.o, tree-ssa-loop-ivopts.o, |
| tree-scalar-evolution.o, tree-data-ref.o, tree-dg.o, |
| tree-elim-check.o, tree-vectorizer.o, tree-loop-linear.o, |
| lambda-code.o): Use it. |
| * tree-chrec.h (build_interval_chrec, build_polynomial_chrec, |
| build_exponential_chrec, build_peeled_chrec): Give a type to the |
| chrec node. |
| * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Preserve correct |
| type. |
| (analyze_evolution_in_loop): Fix test for edges from inside the loop. |
| (scev_initialize): New. |
| (scev_init): Use it. |
| (scev_finalize): New. |
| (scev_done): Use it. |
| * tree-flow-inline.h (loop_of_stmt): Handle initialization statements |
| without crash. |
| * tree-scalar-evolution.h (scev_initialize, scev_finalize): Declare. |
| |
| 2004-03-23 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: (vect_align_data_ref): Check for DECL_ALIGN |
| instead of TYPE_ALIGN. Check for DECL_EXTERNAL. |
| (vect_analyze_data_refs): Check for DECL_EXTERNAL. |
| |
| Add documentation for functions. |
| |
| 2004-03-22 Dale Johannesen <dalej@apple.com> |
| |
| * Makefile.in (OBJS-common): Remove duplicate loop-iv.o. |
| |
| 2004-03-22 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c: Avoid usage of global variables. |
| |
| 2004-03-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-unswitch.o: New file. |
| * Makefile.in (tree-ssa-loop-unswitch.o): Add. |
| (tree-ssa-loop-im.o): Add flags.h dependency. |
| * flags.h (flag_unswitch_loops): Declaration moved from ... |
| * toplev.h (flag_unswitch_loops): ... here. |
| * tree-flow.h (tree_ssa_loop_version): Declaration changed. |
| (tree_ssa_unswitch_loops, estimate_loop_size): Declare. |
| * tree-ssa-loop-im.c: Include flags.h. |
| (movement_possibility, stmt_cost, move_computations_stmt): |
| Handle unswitchable conditions. |
| * tree-ssa-loop-ivcanon.c (estimate_loop_size): Export. |
| * tree-ssa-loop-ivopts.c (find_interesting_uses_cond): Handle |
| if (0) and if (1). |
| * tree-ssa-loop-manip.c (tree_ssa_loop_version): Return the newly |
| created loop. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_unswitch_loops. |
| |
| 2004-03-20 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from tree-ssa branch (lno-merge-20040321). |
| |
| 2004-03-20 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: (vect_init_vector): New function. |
| (vect_get_vec_def_for_operand): Support loop invariant uses. |
| (vect_is_simple_use): Likewise. |
| (vect_mark_stmts_to_be_vectorized): Likewise. |
| (vect_analyze_scalar_cycles): Redundant check removed. |
| |
| (vect_analyze_operations): Don't fail for vdefs that have uses |
| outside the loop. |
| |
| (vect_stmt_relevant_p): A call to get_stmt_operands removed (already |
| performed at new_loop_vec_info). |
| (vect_mark_stmts_to_be_vectorized): Likewise. |
| |
| (need_imm_uses_for): New Function. |
| (vectorize_loops): Add call to compute_immediate_uses and free_df. |
| |
| 2004-03-20 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-chrec.c (chrec_fold_multiply_ival_cst): Handle negative |
| constants correctly. |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Enable use of scev. |
| |
| 2004-03-20 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| PR optimization/14658 |
| * loop-invariant.c (move_invariant_reg): Handle assignments |
| with nontrivial lhs correctly. |
| |
| 2004-03-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * df.c (df_reg_def_chain_create, df_reg_use_chain_create): Do not clean |
| up the old information here. |
| (df_reg_def_chain_clean, df_reg_use_chain_clean): New. |
| (df_analyse_subcfg): Call them. |
| |
| 2003-03-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (loop_commit_inserts): Declare. |
| * tree-ssa-loop-im.c (commit_inserts): Rename to... |
| (loop_commit_inserts): ... this. |
| * move_computations (move_computations, determine_lsm): Use |
| loop_commit_inserts. |
| * tree-ssa-loop-ivopts.c (AVG_LOOP_NITER): New macro. |
| (struct iv): New field use_id. |
| (struct version_info): New field preserve_biv. |
| (alloc_iv, record_use, free_loop_data): Initialize new fields. |
| (enum use_type): Add USE_OUTER. |
| (dump_use, find_interesting_uses_op, add_derived_ivs_candidates, |
| determine_use_iv_cost, rewrite_use): Handle USE_OUTER. |
| (dump_cand, find_interesting_uses_stmt, add_candidate_1, |
| determine_use_iv_cost_condition, determine_iv_cost, set_cost, |
| create_new_iv, rewrite_use_nonlinear_expr): Handle final value |
| replacement. |
| (find_interesting_uses_outer, add_iv_outer_candidates, |
| may_replace_final_value, determine_use_iv_cost_outer, |
| remove_statement, rewrite_use_outer): New functions. |
| (var_at_use): Replaced by ... |
| (var_at_stmt): ... this. |
| (get_computation_at): Split from ... |
| (get_computation): ... here. |
| (get_computation_cost_at): Split from ... |
| (get_computation_cost): ... here. |
| (iv_value): Split from ... |
| (cand_value_at): ... here. |
| (may_eliminate_iv, rewrite_use_compare): Reflect these changes. |
| (tree_ssa_iv_optimize_loop): Call loop_commit_inserts. |
| * tree-ssanames.c (make_ssa_name): Handle NULL argument. |
| |
| 2003-03-18 Devang Patel <dpatel@apple.com> |
| |
| * tree-ssa-live.c (new_tree_live_info): Set num_blocks to |
| last_basic_block instead of n_basic_blocks. |
| (calculate_live_on_entry): Use last_basic_block instead of |
| n_basic_blocks. |
| (calculate_live_on_exit): Same. |
| |
| 2004-03-17 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-cfg.c (thread_jumps): Don't thread jumps over loop headers. |
| * tree-flow.h (rewrite_into_ssa): Declaration changed. |
| (kill_redundant_phi_nodes, tree_loop_optimizer_init): Declare. |
| * tree-optimize.c (execute_todo): Do not free vars_to_rename. |
| (execute_one_pass): Do not allocate vars_to_rename. |
| (tree_rest_of_compilation): Allocate vars_to_rename. |
| * tree-scalar-evolution.c (number_of_iterations_in_loop): Handle |
| loops exited when condition is true. |
| (initialize_scalar_evolutions_analyzer): Use tree_loop_optimizer_init. |
| * tree-ssa-chrec.c (how_far_to_positive): Handle chrec_top correctly. |
| * tree-ssa-dom.c (tree_ssa_dominator_optimize): Changed due to |
| rewrite_into_ssa change. |
| * tree-ssa-loop-im.c (move_computations, determine_lsm): Ditto. |
| * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): |
| Use scev analyser. |
| * tree-ssa-loop-manip.c (allocate_new_names): Update name memory |
| tags. |
| * tree-ssa-loop.c (tree_loop_optimizer_init): New. |
| (tree_ssa_loop_opt, copy_loop_headers): Use it. |
| * tree-ssa.c (rewrite_into_ssa): Use argument to decide whether |
| to rename all variables. |
| (rewrite_all_into_ssa): New. |
| (pass_build_ssa): Use it. |
| (kill_redundant_phi_nodes): Export. |
| |
| 2004-03-15 Andrew Pinski <pinskia@physics.uc.edu> |
| |
| * tree-ssa-return.c (tree_ssa_return): |
| Move check for NULL return value above check |
| for a modify expr. |
| |
| 2004-03-13 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (gate_scev_iv_canon): Do not check rtl |
| level flags here. |
| * tree-ssa-loop-ivcanon.c (get_base_for): Verfify that the argument |
| of the phi node is a constant. |
| (loop_niter_by_eval, create_canonical_iv, try_unroll_loop_completely, |
| canonicalize_loop_induction_variables): Handle loops with more than |
| one exit. |
| (find_loop_niter_by_eval): New. |
| (canonicalize_induction_variables): Check rtl level flags here. |
| |
| 2004-03-12 Andrew Pinski <pinskia@physics.uc.edu> |
| |
| * tree-ssa-return.c (tree_ssa_return): |
| Only do it when we have a modify expr. |
| |
| * tree-ssa-return.c (tree_ssa_return): |
| Add new comments and fix some old ones. |
| |
| 2004-03-12 Falk Hueffner <falk@debian.org> |
| |
| * tree-pass.h: Declare pass_return. |
| |
| 2004-03-11 Andrew Pinski <apinski@apple.com> |
| |
| PR optimization/14135 |
| * tree-ssa-return.c: New file. |
| * Makefile.in (tree-ssa-return.o): Add. |
| * tree-optimize.c (init_tree_optimization_passes): Add |
| pass_return. |
| * timevar.def (TV_TREE_RETURN): New. |
| |
| 2004-03-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivcanon.o: New file. |
| * Makefile.in (tree-ssa-loop-ivcanon.o): Add. |
| * flags.h (flag_unroll_loops): Declare. |
| * loop-invariant.c (record_use): Fix. |
| * params.def (PARAM_MAX_COMPLETELY_PEELED_INSNS): Increment. |
| * timevar.def (TV_TREE_LOOP_IVCANON): New. |
| * toplev.h (flag_unroll_loops): Declaration moved to flags.h. |
| * tree-flow.h (enum tree_ann_type): Remove MISC_ANN. |
| (struct tree_ann_common_d): Add aux field. |
| (struct misc_ann_d): Removed. |
| (struct stmt_ann_d): Removed aux field. |
| (union tree_ann_d): Removed misc field. |
| (canonicalize_induction_variables): Declare. |
| * tree-optimize.c (init_tree_optimization_passes): Add |
| pass_scev_iv_canon. |
| * tree-pass.h (pass_scev_iv_canon): Declare. |
| * tree-scalar-evolution.c (scev_iv_canon, gate_scev_iv_canon, |
| pass_scev_iv_canon): New. |
| (scev_done): Run cfg cleanup. |
| * tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt, |
| move_computations_stmt, schedule_sm): Use aux field in common |
| part of annotations. |
| * tree-ssa-loop-manip.c (allocate_new_names, rename_op, |
| free_new_names): Use common aux field. |
| (tree_duplicate_loop_to_header_edge): Fix memory leak. |
| * tree-ssa.c (mark_def_sites): Fix. |
| * tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Use aux field in |
| common part of annotations. |
| * gcc.dg/tree-ssa/ivcanon-1.c: New test. |
| |
| 2004-03-11 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (lambda-mat.o, lambda-trans.o, lambda-code.o): Add TM_H |
| dependency. |
| |
| 2004-03-09 Olga Golovonevsky <olga@il.ibm.com> |
| Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: (vect_transform_binop): Removed. |
| (vect_transform_op): New function instead of vect_transform_binop, |
| to support both unary and binary operations. |
| (vect_is_supportable_binop): Removed. |
| (vect_is_supportable_op): New function instead of |
| vect_is_supportable_binop to support additional codes. |
| * tree-vectorizer.h: (operation_type): New enum type declared. |
| * config/rs6000/altivec.md: (andvv16qi3, andv8hi3, one_cmplv16qi2, |
| one_cmplv8hi2, one_cmplv4si2, iorv16qi3, iorv8hi3,): New modelling. |
| (*movv4si_internal): Relax condition. |
| (*movv8hi_internal1): Likewise. |
| (*movv16qi_internal1): Likewise. |
| (*movv4sf_internal1): Likewise. |
| |
| 2004-03-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (df.o): Remove FIBHEAP_H dependency. |
| (invariant.o): Add df.h dependency. |
| * df.c: Do not include fibheap.h. |
| (df_bb_table_realloc, df_analyse_subcfg, free_reg_ref_chain, |
| prune_to_subcfg, df_bb_modify, df_find_def, dataflow_set_a_op_b, |
| dataflow_set_copy): New functions. |
| (df_bitmaps_alloc, df_reg_def_chain_create, df_reg_use_chain_create, |
| df_refs_update, df_reg_table_realloc, df_ref_create, |
| df_bb_reg_def_chain_create, df_bb_reg_use_chain_create, |
| df_bb_rd_local_compute, df_bb_ru_local_compute, df_bb_lr_local_compute, |
| df_analyse_1, df_insn_modify): Support analysing only a part of the cfg. |
| (df_rd_transfer_function, df_ru_transfer_function, |
| df_lr_transfer_function): Type of bitmaps changed to void *. |
| (hybrid_search_bitmap, hybrid_search_sbitmap): Merge into ... |
| (hybrid_search): ... new function. |
| (iterative_dataflow_bitmap, iterative_dataflow_sbitmap): Merge into ... |
| (iterative_dataflow): ... new function. Avoid use of fibheaps for |
| a worklist. Do not process basic blocks unnecessarily. |
| * df.h (struct ref): Add data field. |
| (DF_REF_DATA): New macro. |
| (df_analyse_subcfg, df_find_def): Declare. |
| (transfer_function_sbitmap, transfer_function_bitmap): Replaced by ... |
| (transfer_function): ... declare. |
| (iterative_dataflow_sbitmap, iterative_dataflow_bitmap): Replaced by ... |
| (iterative_dataflow): ... declare. |
| (enum set_representation, struct dataflow): New. |
| * loop-invariant.c: Include df.h. |
| (struct loop_data): Remove modified_regs field. |
| (struct def): Remove redundant fields. |
| (struct use): Add insn field. |
| (defs, adef, last_def, m_reg_info, reg_info): Removed. |
| (struct reg): Removed. |
| (record_def, note_insn_stores, find_defs_insn, find_defs_bb, |
| get_current_def, record_dependencies_fer, record_dependencies, |
| move_actual_defs): Removed. |
| (find_defs, find_invariants_insn, create_new_invariant, |
| find_invariants_bb, find_invariants_body, find_invariants, |
| find_invariants_to_move, move_invariant_reg, |
| move_invariants, move_single_loop_invariants, |
| move_loop_invariants): Use df.c. |
| (init_inv_motion_data): Do not initialize removed structures. |
| (free_inv_motion_data, free_loop_data): Do not cleanup removed |
| structures. |
| (check_dependencies, find_invariant_insn, record_uses): New. |
| (record_use): Record the insn. |
| (get_inv_cost): Update comments. |
| |
| 2004-03-09 Andreas Jaeger <aj@suse.de> |
| |
| * common.opt: Put tree-loop-linear at right place. |
| |
| 2004-03-09 Daniel Berlin <dberlin@dberlin.org> |
| |
| * Makefile.in: Add lambda-mat.o, lambda-code.o, and tree-loop-linear.o. |
| * common.opt: Add -ftree-loop-linear. |
| * flags.h: Add flag_tree_loop_linear. |
| * opts.c: Handle tree-loop-linear option. |
| * timevar.def (TV_TREE_LINEAR_TRANSFORM): New. |
| * tree-flow.h (linear_transform_loops): New prototype. |
| * tree-optimize.c (pass_scev_linear_transform): New. |
| * tree-pass.h (pass_scev_linear_transform): Ditto. |
| * tree-scalar-evolution.c (scev_linear_transform): Ditto. |
| (gate_scev): Add check for flag_tree_loop_linear. |
| (gate_scev_linear_transform): New. |
| * lambda-code.c: New file. |
| * lambda-mat.c: New file. |
| * lambda-trans.c: New file. |
| * lambda.h: New file. |
| * tree-loop-linear.c: New file. |
| |
| 2004-03-09 Andrew Pinski <pinskia@physics.uc.edu> |
| |
| * tree-ssa-phiopt.c (conditional_replacement): |
| Initialize new_var to NULL to prevent the |
| uninitialized warning. |
| |
| * tree-ssa-phiopt.c (conditional_replacement): |
| Disable the making a new variable for different |
| types. |
| |
| * tree-ssa-phiopt.c (conditional_replacement): |
| Disable the use of non-gimple of invert_truthvalue. |
| |
| 2004-03-08 Andrew Pinski <apinski@apple.com> |
| |
| * tree-ssa-phiopt.c (make_temp): New function. |
| (tree_ssa_phiopt): Use absolute_replacement |
| and value_replacement. |
| (conditional_replacement): Handle the case |
| the conditional is not a variable and |
| the types do not match. |
| Handle the case where invert_truthvalue |
| would create non-gimple. |
| (absolute_replacement): New function. |
| (value_replacement): New function. |
| |
| 2004-03-08 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * tree-scalar-evolution.c (set_scalar_evolution, |
| set_scalar_evolution_outer_value): Compute the loop number |
| instead of passing it as a parameter. |
| |
| 2004-03-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-live.c (coalesce_tpa_members): Update the root |
| variable of the partition. |
| |
| 2004-03-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (enum iv_position): Add IP_ORIGINAL. |
| (struct iv_cand): Add incremented_at. |
| (dump_cand, add_candidate_1, add_candidate, add_old_iv_candidates, |
| var_at_use, get_computation, get_computation_cost, |
| cand_value_at, determine_iv_cost, find_best_candidate, |
| create_new_iv): Handle IP_ORIGINAL. |
| (stmt_after_ip_original_pos, stmt_after_increment): New functions. |
| (find_givs_in_stmt): Cast the values to the result type. |
| (record_invariant): Do not record virtual operands. |
| |
| 2004-03-03 Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-scalar-evolution.c: Use pointers to varray instead of |
| varrays for functions that insert in the scev database. |
| |
| 2004-03-03 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * Makefile.in (OBJS-common): Add tree-elim-check.o. |
| (tree-chrec.o): Add dependence on tree-pass.h. |
| (tree-elim-check.o): New rule. |
| * tree-elim-check.c: New file. |
| * basic-block.h (edge_source, edge_destination): New inlined |
| functions. |
| * cfgloop.h (loop_nb_iterations): Added a comment on the use |
| of this accessor. |
| * common.opt (ftree-elim-checks): New flag. |
| * flags.h (flag_tree_elim_checks): Declared here. |
| * opts.c (decode_options): Set flag_tree_elim_checks to zero. |
| (common_handle_option): Add case OPT_ftree_elim_checks. |
| * timevar.def (TV_TREE_ELIM_CHECKS): Defined. |
| * toplev.c (flag_tree_elim_checks): Defined. |
| * tree-cfg.c (print_pred_bbs, print_succ_bbs, print_loop): |
| Modify the dumping style. Print nb_iterations. |
| * tree-chrec.c, tree-chrec.h, tree-scalar-evolution.c, |
| tree-scalar-evolution.h, tree-data-ref.c: New version of the |
| scalar evolution algorithm. Don't use a schedule for |
| analyzing the scalar variables. |
| * tree-fold-const.c (tree_fold_bezout): Define. |
| * tree-fold-const.h (tree_fold_int_round_div, |
| tree_fold_int_trunc_mod, tree_fold_int_ceil_mod, |
| tree_fold_int_floor_mod, tree_fold_int_round_mod): Removed, because |
| not used for the moment. |
| (chrec_merge_types): New function. |
| * tree-optimize.c (pass_scev_elim_checks): Register the pass. |
| * tree-pass.h (pass_scev_elim_checks): Declare the pass. |
| * tree-pretty-print.c (dump_generic_node): Print |
| PEELED_CHREC. Remove PERIODIC_CHREC. |
| * tree-vectorizer.c: Modify the use of |
| analyze_scalar_evolution. |
| * tree.def (POLYNOMIAL_CHREC, EXPONENTIAL_CHREC): Store the |
| evolution loop in a third leaf instead of in TREE_TYPE. |
| TREE_TYPE is then used in storing the type of the chrec. |
| (PERIODIC_CHREC): Removed since it is not used for the moment. |
| (PEELED_CHREC): New node. |
| * doc/invoke.texi (fdump-tree-scev, fdump-tree-ddall): Correct |
| the name of these flags. |
| (ftree-elim-checks, fdump-tree-elck): Document. |
| |
| 2004-03-02 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (number_of_iterations_cond, cand_value_at): |
| Cast the constants. |
| |
| 2004-03-01 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (tree-ssa-loop-ivopts.o): Add HASHTAB_H dependency. |
| * tree-ssa-loop-ivopts.c: Include hashtab.h. |
| (old_highest_ssa_version): Rename to version_info_size. |
| (struct tree_niter_desc): Split from ... |
| (struct loop_data): ... here. |
| (relevant): New variable. |
| (tree_ssa_iv_optimize_init, set_iv, find_induction_variables, |
| record_invariant, find_interesting_uses, add_old_ivs_candidates, |
| determine_set_costs, free_loop_data, tree_ssa_iv_optimize_finalize): |
| Use bitmap of relevant ssa names. |
| (var_at_use): New function. |
| (get_computation): Use it. |
| (multiply_by_cost): Cache all results. |
| (mbc_entry_hash, mbc_entry_eq): New functions. |
| (number_of_iterations_cond): Split from ... |
| (determine_number_of_iterations): ... here. |
| (cand_value_at, may_eliminate_iv): New functions. |
| (determine_use_iv_cost_condition, rewrite_use_compare): Implement iv |
| elimination. |
| |
| 2004-03-01 Devang Patel <dpatel@apple.com> |
| |
| * tree-dg.c (dg_delete_graph): Reset varrays. |
| (gate_ddg) : Check current loops. |
| |
| 2004-02-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-cfg.c (cleanup_control_expr_graph): Prevent probability from |
| overflowing. |
| * loop-invariant.c (get_current_def): Fix. |
| * tree-ssa-loop-im.c (move_computations): Only call rewrite_into_ssa |
| if vars_to_rename is nonempty. |
| * tree-ssa-loop-ivopts.c (outermost_usage, ivs): Removed. |
| (struct version_info): New. |
| (version_info, max_inv_id): New variables. |
| (struct cost_pair): Added depends_on field. |
| (struct iv_use): Removed fields choices, n_choices, min_cost and |
| min_cost_cand. |
| (enum iv_position, dump_cand, ip_end_pos, add_candidate_1, |
| determine_iv_cost, create_new_iv): IP_START position disabled. |
| (find_optimal_iv_set_1, min_remaining_cost, undo_changes, |
| execute_removal, add_forbidden_ivs, try_candidate): Removed. |
| (dump_use): Do not dump removed fields. |
| (ver_info, name_info, update_outermost_usage, record_invariant, |
| find_invariants_stmt, find_depends, try_improve_iv_set): New functions. |
| (find_outermost_usage): Handle uses in phis. |
| (divide): Update comment. |
| (tree_ssa_iv_optimize_init): Initialize version_info instead of ivs |
| and outermost_usage. |
| (set_iv, get_iv, find_induction_variables, add_old_ivs_candidates): |
| Use version_info instead of ivs. |
| (record_use): Do not initialize removed fields. |
| (find_interesting_uses_op): Call record_use. |
| (find_interesting_uses_stmt): Call find_invariants_stmt. |
| (find_interesting_uses): Scan just the current loop. |
| (set_use_iv_cost): Initialize depends_on field. |
| (get_use_iv_cost): Return depends_on field. |
| (get_computation): Handle special cases. |
| (force_var_cost, split_address_cost, ptr_difference_cost, |
| difference_cost, get_computation_cost, determine_use_iv_cost_generic, |
| determine_use_iv_cost_address, determine_use_iv_cost_condition): |
| Determine depends_on bitmap. |
| (determine_use_iv_costs): Dump depends_on bitmap. |
| (init_set_costs): Use information about invariants. |
| (find_best_candidate, set_cost, get_initial_solution, |
| find_optimal_iv_set): Take depends_on into account. |
| (rewrite_uses): Use use->selected to select candidate. |
| (free_loop_data, tree_ssa_iv_optimize_finalize): Cleanup version_info |
| instead of ivs. Free depends_on bitmaps. |
| (tree_ssa_iv_optimize_loop): Do not pass iv_set to rewrite_uses. |
| |
| 2004-02-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfgloopmanip.c (loopify): Fix comment. |
| * loop-iv.c (lowpart_byte, lowpart_subreg_p): Removed. |
| (lowpart_subreg, simple_reg_p, iv_get_reaching_def, get_biv_step_1, |
| iv_analyse_op, iv_analyse, get_iv_value): Use standard subreg |
| manipulation functions. |
| (simplify_using_assignment): Handle hardregs correctly. |
| (canon_condition): Use swap_commutative_operands_p. |
| (iv_number_of_iterations): Avoid overflow. |
| * loop-unroll.c (unroll_loop_runtime_iterations): Pass additional |
| argument to compare_and_jump_seq. |
| * loop-unswitch.c (unswitch_loop, may_unswitch_on, |
| unswitch_single_loop, compare_and_jump_seq): Handle comparisons of |
| ccmode registers. |
| * rtl.h (compare_and_jump_seq): Declaration changed. |
| |
| 2004-02-25 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.h (assignment_vec_info_type): New enum value for |
| stmt_vec_info_type. |
| * tree-vectorizer.c (vect_transform_assignment): New function. |
| Support vectorization of assignment stmts. |
| (vect_transform_stmt): Call vect_transform_assignment. |
| (vect_is_supportable_assignment): New function. |
| (vect_analyze_operations): Call vect_is_supportable_assignment. |
| |
| (vect_create_index_for_array_ref): Replace unsigned_intSI_type_node |
| with size_type_node. |
| (vect_transform_loop_bound): Likewise. |
| |
| (get_vectype_for_scalar_type): Avoid division by 0. |
| |
| (vect_analyze_operations): Apply check for no-out-of-loop-uses also |
| to stmts that are marked irrelevant. |
| |
| 2004-02-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (for_each_index): Declare. |
| * tree-ssa-loop-im.c (struct lim_aux_data): Add always_executed_in |
| and sm_done fields. |
| (struct use): New. |
| (max_uid): New static variable. |
| (outermost_invariant_loop, commit_inserts, may_move_till, |
| force_move_till, record_use, free_uses, single_reachable_address, |
| rewrite_uses, schedule_sm, determine_lsm_reg, |
| loop_suitable_for_sm, determine_lsm_loop, determine_lsm): New functions. |
| (add_dependency): Use outermost_invariant_loop. |
| (set_level): Add sanity checking. |
| (determine_invariantness_stmt): Set always_executed_in field. |
| (move_computations_stmt): Modified. |
| (move_computations): Use commit_inserts. |
| (fill_always_executed_in): Take possibility of an infinite loop into |
| account. |
| (tree_ssa_lim): Call determine_lsm. |
| * tree-ssa-loop-ivopts.c (for_each_index): Export. |
| (rewrite_use_address): Improve handling of memory tags. |
| |
| * tree-ssa-loop.c (do_while_loop_p): Readd. |
| (copy_loop_headers): Readd check for do_while_loop_p. |
| * tree-ssa-operands.c (add_stmt_operand): Modified. |
| |
| 2004-02-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from tree-ssa branch (lno-merge-20040221). |
| |
| 2004-02-20 Devang Patel <dpatel@apple.com> |
| |
| * tree-vectorizer.c (vect_analyze_data_ref_dependence): Use |
| ddg_direction_between_stmts (). |
| |
| 2004-02-20 Devang Patel <dpatel@apple.com> |
| |
| * tree-data-ref.h (data_dependence_direction): Add new member |
| dir_independent. |
| * tree-dg.h (tree-data-ref.h): Include. |
| (ddg_direction_between_stmts, ddg_distance_between_stmts): New decls. |
| * tree-dg.c (find_ddr_between_stmts, ddg_direction_between_stmts, |
| ddg_distance_between_stmts): New functions. |
| |
| 2004-02-19 Devang Patel <dpatel@apple.com> |
| |
| * tree-dg.c (dg_delete_edges, dg_delete_node, dg_delete_graph, |
| dg_delete_edge, gate_delete_ddg): New functions. |
| (pass_delete_ddg): New. |
| * tree-dg.h (dg_delete_graph, dg_delete_edge): New extern decls. |
| * tree-optimize.c (init_tree_optimization_passes): Add new pass |
| pass_delete_ddg. |
| * tree-pass.h (pass_delete_ddg): New extern. |
| |
| 2004-02-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-flow.h (create_iv): Declare. |
| * tree-ssa-loop-ivopts.c (create_iv): New function. |
| (create_new_iv): Use create_iv. |
| |
| 2004-02-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop.c (do_while_loop_p): New function. |
| (copy_loop_headers): Do not peel do-while loops. |
| |
| 2004-02-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-invariant.c: New file. |
| * Makefile.in (loop-invariant.o): New. |
| * cfgloop.h (init_set_costs, global_cost_for_size, |
| move_loop_invariants): Declare. |
| * toplev.c (rest_of_handle_loop2): Call move_loop_invariants. |
| (lang_dependent_init): Call init_set_costs. |
| * tree-ssa-loop-ivopts.c (avail_regs, res_regs, small_cost, pres_cost, |
| spill_cost): Made static. |
| (global_cost_for_size): Export. |
| (ivopts_global_cost_for_size, init_set_costs): New functions. |
| (determine_set_costs): Do not initialize set cost constants. |
| Use ivopts_global_cost_for_size. |
| (try_candidate, find_optimal_iv_set_1, set_cost): Use |
| ivopts_global_cost_for_size. |
| |
| * cfgloop.c (fill_sons_in_loop): Fix typo in comment. |
| |
| 2004-02-17 Devang Patel <dpatel@apple.com> |
| |
| * tree-vectorize.c (vect_create_data_ref): Set TREE_ADDRESSABLE bit. |
| (vectorize_loops): Reset loop->aux. |
| |
| 2004-02-16 Devang Patel <dpatel@apple.com> |
| |
| * Makefile.in (TREE_FLOW_H): Add tree-dg.h |
| (OBJS-common): Add tree-dg.o |
| (gtype-desc.o): Depend on tree-dg.h |
| (tree-dg.o): New rule. |
| (GTFILES): Add tree-data-ref.h, tree-data-ref.h |
| * common.opt (ftree-ddg): Add new option. |
| * flags.h (flag_ddg): New extern. |
| * gengtype.c (open_base_files): Add tree-dg.h and tree-data-ref.h in |
| the list. |
| * opts.c (decode_option): Set flag_ddg to zero. |
| (common_handle_option): Handle OPT_ftree_ddg. |
| * timevar.def (TV_DEP_GRAPH): New. |
| * toplev.c (flag_ddg): New flag. |
| (lang_independent_options): Add entry for -ftree-ddg. |
| * tree-data-ref.c (compute_all_dependences): Make externally visible. |
| * tree-data-ref.h (data_reference, subscript, data_dependence_relation) |
| Add GTY markers. |
| (compute_all_dependences): Make externally visible. |
| * tree-dg.c: New file. |
| * tree-dg.h: New file. |
| * tree-flow-inline.h (dg_node_for_stmt): New function. |
| * tree-flow.h (tree-dg.h): Include. |
| (stmt_ann_d): New member, dg_node. |
| * tree-optimize.c (init_tree_optimization_passes): Add pass_ddg. |
| * tree-pass.h (PROP_scev): Define. |
| (tree_opt_pass pass_ddg): Extern decl. |
| * tree-scalar-evolution.c (pass_scev_anal): Provide PROP_scev property. |
| * varray.c (element[NUM_VARRAY_DATA]): Add new member for dependence |
| graph. |
| * varray.h (varray_data_enum): New member VARRAY_DATA_DG. |
| (varray_data_tag): New member dg. |
| (VARRAY_DG_INIT): New #define. |
| (VARRAY_DG): New #define. |
| (VARRAY_PUSH_DG): New #define. |
| |
| 2004-02-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-optimize.c (init_tree_optimization_passes): Move ch after |
| the first dominator optimization pass. |
| * tree-ssa-loop.c (should_duplicate_loop_header_p, |
| copy_loop_headers): Work over ssa. |
| (pass_ch): Require and update ssa form. |
| (mark_defs_for_rewrite, duplicate_blocks): New. |
| |
| 2004-02-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (for_each_index, prepare_decl_rtl, |
| peel_address): Handle RESULT_DECL. |
| |
| 2004-02-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-doloop.c (doloop_optimize): Use get_simple_loop_desc. |
| * loop-init.c (loop_optimizer_finalize): Free the simple loop |
| descriptions. |
| * loop-unroll.c (unroll_and_peel_loops): Do not free the simple loop |
| descriptions. |
| (decide_peel_once_rolling, decide_peel_completely, |
| decide_unroll_stupid): Test assumptions. |
| decide_unroll_constant_iterations, decide_unroll_runtime_iterations, |
| decide_peel_simple, peel_loop_simple, unroll_loop_stupid): Update |
| number of iterations info. |
| (unroll_loop_constant_iterations, unroll_loop_runtime_iterations, |
| (loop_exit_at_end_p): Use get_simple_loop_desc. |
| |
| 2004-02-08 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfgloop.h (struct niter_desc): Add first_special, extend, |
| extend_mode, delta and mult fields. |
| (get_iv_value): Declare. |
| * expr.c (force_operand): Handle subregs of expressions. |
| * loop-doloop.c (doloop_valid_p): Test desc->infinite properly. |
| * loop-iv.c (dump_iv_info): Dump new fields. |
| (lowpart_byte, lowpart_subreg_p, lowpart_subreg, |
| iv_constant, iv_subreg, iv_extend, iv_neg, iv_add, iv_mult, |
| get_biv_step_1, get_biv_step, shorten_into_mode, |
| canonicalize_iv_subregs): New functions. |
| (simple_reg_p, simple_set_p, iv_get_reaching_def, iv_analyse_biv, |
| iv_analyse_op, iv_analyse, iv_number_of_iterations): Handle subregs. |
| * loop-unswitch.c (may_unswitch_on): Handle subregs. |
| |
| 2004-02-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * Makefile.in (tree-ssa-loop-ivopts.o): Add RECOG_H and insn-config.h |
| dependency. |
| * loop-iv.c (iv_analysis_loop_init): Ensure we only care about |
| increments that are done just once each iteration. |
| * timevar.def (TV_TREE_LOOP_IVOPTS, TV_TREE_CH): New. |
| * tree-ssa-loop-ivopts.c: Include insn-config.h and recog.h. |
| (INFTY): Increase. |
| (struct iv_use): Add choices, n_choices, min_cost_cand and selected |
| fields. Rename field best_cost to min_cost. |
| (CONSIDER_ALL_CANDIDATES_BOUND): Decrease. |
| (dump_use): Dump new fields. |
| (dump_uses, cst_and_fits_in_hwi, int_cst_value, build_int_cst, |
| divide, strip_offset, add_cost, multiply_by_cost, get_address_cost, |
| force_var_cost, peel_address, ptr_difference_const, |
| split_address_cost, ptr_difference_cost, difference_cost, |
| get_computation_cost): New functions. |
| (find_induction_variables): Formating changes. |
| (record_use): Initialize new fields. |
| (add_old_ivs_candidates): Do not add invariants. |
| (set_use_iv_cost): Set min_cost. |
| (get_use_iv_cost): Fix. |
| (get_computation): Use less memory. |
| (determine_use_iv_cost_generic, determine_use_iv_cost_address, |
| determine_use_iv_cost_condition, determine_iv_cost): Use |
| new cost estimation functions. |
| (compute_iv_set_cost): Removed. |
| (struct undo_record): New. |
| (use_with_min_choices, min_remaining_cost, undo_changes, |
| execute_removal, add_forbidden_ivs, try_candidate, set_cost, |
| get_initial_solution): New functions. |
| (find_optimal_iv_set_1, find_optimal_iv_set): Made more effective. |
| (create_new_ivs, rewrite_use_nonlinear_expr, rewrite_use_address): |
| Unshare created expressions. |
| (free_loop_data): Free new structures. |
| (tree_ssa_iv_optimize_loop): Remove garbage collection. |
| (tree_ssa_iv_optimize): Use TV_TREE_LOOP_IVOPTS timevar. |
| * tree-ssa-loop.c (pass_ch): Use TV_TREE_CH timevar. |
| |
| 2004-02-02 Steven Bosscher <stevenb@suse.de> |
| |
| * common.opt: Re-order some options in ASCII collating order. |
| |
| 2004-01-30 Devang Patel <dpatel@apple.com> |
| |
| * cfgloopmanip.c (loopify): Always redirect switch_bb's BRANCH_EDGE, |
| however redirect FALLTHRU_EDGE only if asked. |
| * tree-ssa-loop-manip.c (tree_ssa_loop_version): Update FALLTHRU_EDGE |
| pending stmts. |
| |
| 2004-01-29 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (find_optimal_iv_set_1, compute_iv_set_cost): |
| Fix memory leak, speed up. |
| (tree_ssa_iv_optimize_finalize): Move reseting of DECL_RTL... |
| (free_loop_data): ... here. |
| |
| 2004-01-29 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * basic-block.h (FOR_BB_INSNS, FOR_BB_INSNS_REVERSE): New macros. |
| * cfgloop.c (num_loop_branches): New function. |
| * cfgloop.h (struct loop_desc): Add field strange. |
| (struct loop): Remove fields simple, desc, has_desc. |
| (num_loop_branches, get_simple_loop_desc, free_simple_loop_desc): |
| Declare. |
| (simple_loop_desc): New inline function. |
| * cfgloopanal.c (count_loop_iterations): Set field strange. |
| (simple_loop_exit_p): Initialize postincr properly. |
| * loop-iv.c (assign_luids, mark_sets, simplify_using_initial_values): |
| Use FOR_BB_INSNS/FOR_BB_INSNS_REVERSE. |
| (iv_number_of_iterations): Restrict the number of iterations to the |
| actual mode. |
| (find_simple_exit): Check results with the old simple loop analyser. |
| (get_simple_loop_desc, free_simple_loop_desc): New functions. |
| * loop-unroll.c (loop_exit_at_end_p): New function. |
| (unroll_and_peel_loops, peel_loops_completely, |
| decide_unrolling_and_peeling, decide_peel_once_rolling, |
| decide_peel_completely, peel_loop_completely, |
| decide_unroll_constant_iterations, unroll_loop_constant_iterations, |
| decide_unroll_runtime_iterations, unroll_loop_runtime_iterations, |
| decide_peel_simple, decide_unroll_stupid): Use new iv analysis. |
| * predict.c (predict_loops): Use new iv analysis. |
| |
| * tree-ssa-loop.c (copy_loop_headers): Predict entry edge from |
| copied loop header to be taken. |
| |
| * tree-cfg.c (tree_find_edge_insert_loc, |
| bsi_insert_on_edge_immediate): Return the newly created block. |
| (bsi_commit_edge_inserts_1): Add parameter to |
| tree_find_edge_insert_loc call. |
| * tree-flow.h (bsi_insert_on_edge_immediate): Declaration changed. |
| * tree-ssa-loop-ivopts.c (create_new_iv): Update loop for newly |
| created block. |
| |
| * cfg.c (unlink_block): Clean prev_bb and next_bb fields. |
| |
| 2004-01-29 Devang Patel <dpatel@apple.com> |
| |
| * cfglayout.h (loopify): Add new bool parameter. |
| * cfgloopmanip.c (loopify): Support new bool argument. |
| * loop-unswitch.c (unswitch_loop): Supply additional argument 'true' |
| to loopify. |
| * tree-cfg.c (tree_block_label): Make externally visible. |
| * tree-flow.h (tree_block_label, test_loop_versioning, tree_ssa_loop_version): New |
| extern decls. |
| * tree-ssa-loop-manip.c (lv_adjust_loop_entry_edge, lv_udate_pending_stmts, |
| lv_adjust_loop_header_phi, tree_ssa_loop_version): New functions. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Test loop versioning. |
| |
| 2004-01-29 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-scalar-evolution.c (scev_analyze_inner_loop_phi): Add ;. |
| |
| 2004-01-29 Sebastian Pop <sebastian.pop@ensmp.fr> |
| |
| * Makefile.in (tree-ssa-dom.o): Depends on cfgloop.h. |
| * tree-flow-inline.h (loop_of_stmt): New function. |
| * tree-ssa-dom.c: Include cfgloop.h. |
| (tree_ssa_dominator_optimize): Detect and finalize the natural |
| loops structure. |
| (simplify_rhs_and_lookup_avail_expr): Verify that the folded |
| operations belong to the same loop. |
| |
| * cfgloop.h (loop): Rewrite comments for the nb_iterations field. |
| * tree-data-ref.c (analyze_all_data_dependences): Increase the size |
| of the dependence graph when computing all the dependences. |
| * tree-optimize.c (init_tree_optimization_passes): Move the |
| pass_scev after the pass_pre. |
| * tree-scalar-evolution.h: Update comments. |
| * tree-scalar-evolution.c (symbolically_analyze, |
| scev_follow_ssa_edge_same_loop, scev_follow_ssa_edge_inner_loop, |
| loop_is_strictly_included_in, scev_analyze_inner_loop_phi, |
| draw_tree_cfg): New functions. |
| (compute_value_on_exit_of_loop): Removed. |
| (analyze_evolution): Mark phi nodes instead of looking into |
| the already_visited array. |
| (analyze_evolution_in_loop): Use scev_follow_ssa_edge_same_loop, |
| scev_follow_ssa_edge_inner_loop. |
| (scev_analyze_modify_expr): Refine the wrap-around case. |
| (scev_follow_ssa_edge): Handle edges to the current and inner loops |
| separately calling scev_follow_ssa_edge_same_loop or |
| scev_follow_ssa_edge_inner_loop. |
| (merge_branches_of_condition_phi_node): Restructure. |
| (set_nb_iterations_in_loop): Add one to the number of iterations. |
| When the loop copy headers is on, we always exit the loop after |
| having executed once its body. |
| (record_dependences_for_opnd): Do not record dependences on variables |
| that are not in the current loop. |
| (pass_scev_depend): Rename the pass from alldd to ddall. |
| * tree-ssa-loop.c (gate_ch): New function. |
| (pass_ch): Use gate_ch. |
| * doc/invoke.texi (-ftree-ch, -fdump-tree-ch): Document flags. |
| (fdump-tree-scev, fdump-tree-ddall): Update names, and comments. |
| |
| * common.opt (ftree-ch): Document. |
| * flags.h (flag_tree_ch): Declare. |
| * opts.c (flag_tree_ch): Set it on by default. |
| (flag_scalar_evolutions, flag_all_data_deps): Turn off by default. |
| (OPT_ftree_ch): Handle this case. |
| * toplev.c (lang_independent_options): Register flag_tree_ch. |
| |
| 2004-01-28 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfghooks.c (split_block): Update probabilities. |
| |
| * cfgloopmanip.c (loopify): Always redirect branch edge to the new |
| loop. |
| * loop-iv.c (canon_condition, simplify_using_condition): Export. |
| (check_simple_exit): Do not allow cc mode registers. |
| * loop-unroll.c (unroll_loop_runtime_iterations): Use |
| compare_and_jump_seq. |
| * loop-unswitch.c (may_unswitch_on_p): Renamed to may_unswitch_on, |
| returns the condition, use iv_analyse. |
| (compare_and_jump_seq): New function. |
| (unswitch_loops): Call iv_analysis_done. |
| (unswitch_single_loop, unswitch_loop): Handle nontrivial invariants. |
| * rtl.h (compare_and_jump_seq, canon_condition, |
| simplify_using_condition): Declare. |
| |
| 2004-01-28 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * loop-iv.c: New. |
| * loop-doloop.c: New. |
| * Makefile.in (loop-doloop.o, loop-iv.o): Add. |
| * alias.c (init_alias_analysis): Test flag_unroll_loops instead of |
| flag_old_unroll_loops. |
| * cfgloop.h (struct rtx_iv, struct niter_desc): New. |
| (get_loop_level, iv_analysis_loop_init, iv_get_reaching_def, |
| iv_analyse, find_simple_exit, iv_number_of_iterations, |
| iv_analysis_done, doloop_optimize_loops): Declare. |
| * cfgloopanal.c (get_loop_level): New. |
| * common.opt (floop-optimize2): New. |
| (fold-unroll-loops, fold-unroll-all-loops): Remove. |
| * doloop.c (doloop_condition_get): Export. |
| * flags.h (flag_old_unroll_loops, flag_old_unroll_all_loops): |
| Declaration removed. |
| * loop-unswitch.c (reversed_condition): Export. |
| * loop.c (loop_invariant_p): Use flag_unroll_loops instead |
| of flag_old_unroll_loops. |
| * opts.c (common_handle_option): Handle -floop-optimize2, |
| do not handle -fold-unroll-loops and -fold-unroll-all-loops. |
| * params.def (PARAM_MAX_DOLOOP_INSNS): New. |
| * rtl.h (get_mode_bounds, doloop_condition_get, |
| reversed_condition): Declare. |
| * stor-layout.c (get_mode_bounds): New function. |
| * toplev.c (flag_old_unroll_loops, flag_old_unroll_all_loops): |
| Remove. |
| (flag_loop_optimize2): New. |
| (rest_of_handle_loop_optimize): Use flag_unroll_loops instead |
| of flag_old_unroll_loops. |
| (rest_of_handle_loop2): Call doloop_optimize_loops. |
| (rest_of_compilation): Use flag_loop_optimize2. |
| (process_options): Remove flag_old_unroll_loops handling, add |
| flag_loop_optimize2 handling. |
| * toplev.h (flag_loop_optimize2): Declare. |
| * unroll.c (unroll_loop): Use flag_unroll_all_loops instead of |
| flag_old_unroll_all_loops. |
| |
| 2004-01-26 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * Makefile.in: (tree-vectorizer.o): Remove dependency on real.h. |
| * tree-vectorizer.c: (real.h): Remove included file. |
| (vect_get_vec_def_for_operand): No need to explicitly use build_int_2 |
| and build_real. |
| |
| (vect_transform_loop_bound): Create loop IV update at loop exit |
| block, following changes in loop control. |
| |
| (vectorize_loops): Remove debug printout. |
| |
| * config/rs6000/altivec.md: (*movv4si_internal): More complex |
| condition. |
| (*movv8hi_internal1): Likewise. |
| (*movv16qi_internal1): Likewise. |
| (*movv4sf_internal1): Likewise. |
| |
| 2004-01-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c (determine_set_costs): Do not use |
| GENERAL_REGNO_P. |
| |
| 2004-01-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-ivopts.c: New file. |
| * Makefile.in (tree-ssa-loop-ivopts.o): Add. |
| * expr.c (expand_expr_1): Handle expand_expr_1. |
| * fold-const.c (invert_tree_comparison, invert_tree_comparison): |
| Export. |
| * tree-cfg.c (stmt_bsi): New function. |
| * tree-flow.h (stmt_bsi, tree_ssa_dce_no_cfg_changes, |
| tree_ssa_iv_optimize): Declare. |
| * tree-simple.c (get_base_symbol): Handle INDIRECT_REF. |
| * tree-ssa-dce.c (tree_ssa_dce_no_cfg_changes): Split from ... |
| (tree_ssa_dce): ... here. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_iv_optimize. |
| * tree-ssanames.c (make_ssa_name): Allow creating ssa name without |
| statement. |
| * tree.h (invert_tree_comparison, swap_tree_comparison): Declare. |
| |
| 2004-01-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * doloop.c (doloop_optimize): Test for loop->top instead of |
| loop->scan_start. |
| |
| 2004-01-22 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-alias-common.c (HAVE_BANSHEE): Do not define it. |
| (create_alias_vars): Do not test HAVE_BANSHEE value. |
| |
| 2004-01-22 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-ssa-loop-manip.c: New file. |
| * Makefile.in (tree-ssa-loop-manip.o): Add. |
| * basic-block.h (struct reorder_block_def): New field copy_number. |
| * cfghooks.c (split_block, make_forwarder_block): Update irreducible |
| loop information. |
| * cfgloopmanip.c (duplicate_loop_to_header_edge): Set copy_number. |
| * tree-cfg.c (tree_duplicate_bb): Duplicate also virtual operands. |
| * tree-flow.h (enum tree_ann_type): Add MISC_ANN. |
| (struct misc_ann_d): New. |
| (union tree_ann_d): Add misc field. |
| (test_unrolling_and_peeling, tree_duplicate_loop_to_header_edge): |
| Declare. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Call |
| test_unrolling_and_peeling. |
| * tree-ssa-operands.c (copy_virtual_operands): New. |
| * tree-ssa-operands.h (copy_virtual_operands): Declare. |
| |
| * dominance.c: Fix comment. |
| |
| * cfgloopanal.c (mark_irreducible_loops): Rewriten. |
| (struct edge, struct vertex, struct graph): New. |
| (dump_graph, new_graph, add_edge, dfs, check_irred, for_each_edge, |
| free_graph): New functions. |
| |
| 2004-01-21 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-scalar-evolution.c (pass_scev): Don't use a name. |
| (pass_scev_anal): Named this pass "scev". |
| |
| 2004-01-21 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * Makefile.in: (tree-vectorizer.o): Add dependency on real.h. |
| * tree-vectorizer.c: (vect_is_simple_use): Allow constants. |
| (real.h): Included to support constants vectorization. |
| (vect_get_vec_def_for_operand): New function. |
| (vect_transform_binop): Use above new function. |
| (vect_transform_store): Likewise. |
| (vect_transform_load): Likewise. |
| |
| (vect_get_new_vect_var): Allow more flexibility in naming scheme. |
| (vect_create_index_for_array_ref): Call vect_get_new_vect_var with a |
| name prefix instead of a variable. |
| (vect_create_data_ref): Likewise. |
| (vect_create_destination_var): Likewise. |
| |
| (vect_analyze_data_refs): Temporarily restrict vectorizable data refs |
| to ARRYA_RES which base is a VAR_DECL. |
| (vect_create_data_ref): Support only VAR_DECL array base. Mark all |
| vops for renaming. |
| |
| (vect_get_array_first_index): New function. |
| (vect_create_index_for_array_ref): Consider array_first_index. |
| (vect_analyze_data_ref_access): Likewise. |
| |
| (vect_get_loop_niters): Use number_of_iterations_in_loop. |
| (vect_analyze_loop_form): Don't attempt to vectorize if |
| number_of_iterations == 0. |
| |
| (vect_analyze_operations): Fix vectype analysis. |
| |
| (vect_create_index_for_array_ref): Fix code insertion in loop prolog. |
| (vect_transform_loop_bound): Likewise. |
| |
| 2004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>, |
| Devang Patel <dpatel@apple.com> |
| |
| * basic-block.h (struct reorder_block_def): Moved from cfglayout.h. |
| (alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare. |
| * bb-reorder.c (copy_bb, copy_bb_p): Use duplicate_block hooks. |
| * loop-unswitch.c (unswitch_loop): Ditto. |
| * tracer.c (tail_duplicate): Ditto. |
| * tree-ssa-loop.c (copy_loop_headers): Ditto. |
| * cfg.c (rbi_pool): New. |
| (alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New functions. |
| * cfghooks.c (can_duplicate_block_p, duplicate_block): New functions. |
| * cfghooks.h (struct cfg_hooks): Add can_duplicate_block_p and |
| duplicate_block hooks. |
| (can_duplicate_block_p, duplicate_block): Declare. |
| * cfglayout.c (cfg_layout_pool): Removed. |
| (cfg_layout_initialize_rbi): Removed. |
| (fixup_reorder_chain): Use initialize_bb_rbi. |
| (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): |
| Ir-independent parts moved to cfghooks.c. |
| (cfg_layout_initialize): Use alloc_rbi_pool and initialize_bb_rbi. |
| (cfg_layout_finalize): Use free_rbi_pool. |
| (can_copy_bbs_p): Use can_duplicate_block_p. |
| (copy_bbs): Use duplicate_block. |
| * cfglayout.h (struct reorder_block_def): Moved to basic-block.h |
| (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb, |
| cfg_layout_initialize_rbi): Declaration removed. |
| * cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi. |
| (cfg_layout_rtl_cfg_hooks): Add cfg_layout_can_duplicate_bb_p and |
| cfg_layout_duplicate_bb. |
| * tree-cfg.c (build_tree_cfg): Call alloc_rbi_pool. |
| (create_bb): Call initialize_bb_rbi. |
| (delete_tree_cfg): Call free_rbi_pool. |
| (tree_duplicate_bb): Ir independent parts moved to cfghooks.c. |
| (tree_cfg_hooks): Add tree_can_duplicate_bb_p and tree_duplicate_bb. |
| * tree-flow.h (tree_duplicate_bb): Declaration removed. |
| |
| 2004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * tree-alias-common.c (create_alias_vars): Don't use |
| andersen_alias_ops when we don't HAVE_BANSHEE. |
| |
| * tree-ssa-loop.c (pass_ch): Remove TODO_verify_ssa. |
| |
| 2004-01-20 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| Merge from tree-ssa branch (lno-merge-20040120). |
| |
| 2004-01-18 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-scalar-evolution.c: (get_loop_exit_condition): Exposed to |
| external usage. |
| * tree-scalar-evolution.h: (get_loop_exit_condition): Exposed to |
| external usage. |
| * tree-vectorizer.c: (vect_is_simple_iv_evolution): Additional argument |
| to control how strict this function would be. |
| (vect_create_index_for_array_ref): Invoke vect_is_simple_iv_evolution |
| with "strict" set to true. |
| (vect_transform_loop_bound): More general loop bound transformation |
| scheme, independent of the loop exit condition form. |
| (vect_analyze_scalar_cycles): Invoke vect_is_simple_iv_evolution with |
| "strict" set to false. |
| (vect_get_loop_niters): Use monev utilities/precomputed info - |
| loop->nb_iterations and get_loop_exit_condition. |
| |
| 2004-01-17 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: (vect_get_name_for_new_var): Removed. |
| (vect_get_new_vect_var): New function. Replaces above function. |
| (vect_create_index_for_array_ref): Call vect_get_new_vect_var |
| instead of vect_get_name_for_new_var. |
| (vect_create_data_ref): Likewise. |
| (vect_create_destination_var): Likewise. |
| * tree-vectorizer.h: (vect_var_kind): New enum type. |
| |
| 2004-01-15 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-chrec.c (remove_initial_condition, |
| add_expr_to_loop_evolution_1, add_expr_to_loop_evolution_2): New functions. |
| (add_expr_to_loop_evolution): Use these functions. |
| (build_polynomial_evolution_in_loop, |
| build_exponential_evolution_in_loop): Move from here... |
| * tree-chrec.h (build_polynomial_evolution_in_loop, |
| build_exponential_evolution_in_loop): Remove declarations. |
| * tree-scalar-evolution.c (build_polynomial_evolution_in_loop, |
| build_exponential_evolution_in_loop): ... to here. Declare |
| these functions static. |
| (select_outer_and_current_evolutions): New function. |
| (matched_an_increment, scev_analyze_modify_expr, |
| compute_overall_effect_of_inner_loop, |
| analyze_scalar_evolution): Use this function. |
| (add_to_evolution, multiply_evolution): Construct canonical |
| chains of recurrences. |
| |
| 2004-01-14 Dorit Naishlos <dorit@il.ibm.com> |
| Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-vectorizer.c: (vect_is_simple_iv_evolution): Correctly use |
| APIs of the new monev analyzer. Additional argument (loop_num). |
| (vect_transform_loop_bound): Additional argument to |
| vect_is_simple_iv_evolution. |
| (vect_analyze_scalar_cycles): Likewise. |
| (vect_analyze_data_ref_access): Likewise. |
| (vect_get_loop_niters): Likewise. |
| |
| 2004-01-14 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-optimize.c: (optimize_function_tree): Cleanup. |
| |
| * tree-vectorizer.h: (DBG_VECT, DBG_VECT2): Removed. |
| (vec_array_base_name_differ_p): Removed. |
| (vec_analyze_array): Removed. |
| (struct _stmt_vec_info): New field: loop. |
| (STMT_VINFO_LOOP): New access function to above new field. |
| (new_stmt_vec_info): Additional argument. |
| |
| * tree-vectorizer.c: (vect_is_simple_use): New function. |
| (vect_is_supportable_binop): Added call to vect_is_simple_use(). |
| (vect_is_supportable_store): Added call to vect_is_simple_use(). |
| (vect_is_supportable_load): Added call to vect_is_simple_use(). |
| |
| (vect_create_index_for_array_ref): Correct handling of accesses with |
| an offset (e.g, a[i+OFF]). |
| (vect_create_data_ref): Pass STMT as an argument to |
| vect_create_index_for_array_ref, instead of an operand. |
| (vect_transform_store): Handle accesses with an offset. |
| (vect_transform_load): Handle accesses with an offset. |
| |
| (vect_create_data_ref): Set the mem_tag of the pointer used for the |
| vector data-access to reflect correct may-alias info. |
| |
| (get_address_calculation_operands): Removed. |
| (exist_non_indexing_operands_for_use_p): New function, in place of |
| get_address_calculation_operands() to correctly handle induction (for |
| now this means to detect and not attempt to vectorize computations |
| like a[i]=i). |
| (vect_analyze_scalar_cycles): call above new function instead of |
| get_address_calculation_operands(). |
| (vect_mark_stmts_to_be_vectorized): Likewise. |
| |
| (get_vectype_for_scalar_type): Added test of VECTOR_MODE_SUPPORTED_P. |
| |
| (new_stmt_vec_info): Takes also LOOP as an argument and initializes |
| new field STMT_VINFO_LOOP. |
| (new_loop_vec_info): Pass additional argument to new_stmt_vec_info. |
| |
| (vect_stmt_relevant_p): Use flow_bb_inside_loop_p instead of comparing |
| loop->depth's. |
| (vect_analyze_operations): Likewise. |
| |
| (vect_align_data_ref): Removed stderr debug printouts, some of which |
| replaced with code dumping dependending on TDF_DETAILS to dump_file. |
| (vect_create_index_for_array_ref): Likewise. |
| (vect_create_destination_var): Likewise. |
| (vect_create_data_ref): Likewise. |
| (vect_transform_binop): Likewise. |
| (vect_transform_store): Likewise. |
| (vect_transform_load): Likewise. |
| (vect_transform_stmt): Likewise. |
| (vect_transform_loop_bound): Likewise. |
| (vect_transform_loop): Likewise. |
| (vect_analyze_operations): Likewise. |
| (vect_is_simple_iv_evolution): Likewise. |
| (vect_analyze_scalar_cycles): Likewise. |
| (vect_analyze_data_ref_dependences): Likewise. |
| (vect_analyze_data_refs): Likewise. |
| (vect_mark_relevant): Likewise. |
| (vect_stmt_relevant_p): Likewise. |
| (vect_mark_stmts_to_be_vectorized): Likewise. |
| (vect_get_loop_niters): Likewise. |
| (vectorize_loops): Likewise. |
| |
| 2004-01-13 Sebastian Pop <s.pop@laposte.net> |
| Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-fold-const.h (tree_fold_int_plus, tree_fold_int_minus, |
| tree_fold_int_multiply): Remove NON_LVALUE_EXPR from the |
| answers of the folder. Fixes bootstraps for powerpc. |
| |
| 2004-01-12 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-chrec.c (chrec_fold_plus, chrec_fold_multiply): Verify |
| that there is no chrecs nested in the operands before calling |
| the folder. |
| (evolution_function_in_loop_num): When there is no evolution |
| in the loop, return the initial condition. |
| (evolution_part_in_loop_num): When there is no evolution |
| in the loop, return NULL_TREE. |
| (chrec_eval_next_init_cond): Adapt the function for the |
| multivariate case. |
| (tree_contains_chrecs): Avoid the use of double negation. |
| * tree-chrec.h (chrec_eval_next_init_cond): Add a parameter |
| for the dimension in which to evaluate the variation. |
| * tree-scalar-evolution.c (is_ssa_name_a_version_of_variable, |
| expression_contains_variable_p, remove_variable_from_expression, |
| analyze_non_gimple_initial_condition, matched_an_increment, |
| matched_an_exponentiation, matched_a_wrap_around, |
| matched_an_arithmetic_wrap_around, |
| evolution_of_phi_already_analyzed_p): New static functions. |
| (scev_analyze_modify_expr): Use these functions. Refine the |
| cases detected as wrap-around variables. |
| (analyze_initial_condition): Don't erase the evolution in the |
| previous dimensions when computing the initial condition for a |
| new loop. |
| (analyze_evolution_in_loop): Call the scev_analyze_modify_expr |
| on the tree node, not on its evolution. |
| (scev_follow_ssa_edge): In the case of an inner loop-phi-node, |
| when the outer edge is a phi-node follow up the edge. |
| (scev_follow_ssa_edge): Avoid the analysis of the inner loop |
| when it has already been analyzed. |
| (merge_evolutions): Refine the operation for zero, one, and |
| more branches of evolutions. |
| |
| 2004-01-09 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-scalar-evolution.c: New version of the analyzer. |
| * tree-scalar-evolution.h: Same. |
| * tree-chrec.c: Same. |
| * tree-data-ref.c: Same. |
| * tree-chrec.h: Same. |
| * tree-data-ref.h: Same. |
| * tree-fold-const.h: Same. |
| |
| * tree-vectorizer.c (vect_transform_loop_bound, |
| vect_analyze_scalar_cycles, vect_analyze_data_ref_access, |
| vect_analyze_data_refs, vect_get_loop_niters): Use the new |
| interface of the analyzer. |
| * tree-optimize.c (optimize_function_tree): Same. |
| |
| 2004-01-08 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfgloop.h (loop_is_included_in): Declaration removed. |
| * tree-scalar-evolution.c (stmt_is_in_loop, stmt_is_not_in_loop, |
| loop_is_included_in): Use existing functions to implement |
| them. |
| |
| 2004-01-06 Sebastian Pop <s.pop@laposte.net> |
| |
| * cfgloop.h (loop_is_included_in, outer_loop, inner_loop, |
| next_loop, loop_num, loop_depth, loop_header, |
| loop_nb_iterations, loop_num_exits, loop_exit_edges, |
| loop_exit_edge): New inline functions. |
| (loop_is_included_in): Declare here. |
| * tree-flow-inline.h (loop_of_stmt): New inline function. |
| * tree-scalar-evolution.c (loop_is_included_in): Remove declaration. |
| (stmt_is_in_loop, stmt_is_not_in_loop): New functions. |
| (loop_is_included_in, loop_is_included_in_rec): Moved up in the same file. |
| |
| 2004-01-06 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: Fix typos. |
| |
| 2004-01-05 Andreas Jaeger <aj@suse.de> |
| |
| * tree-vectorizer.h: Follow coding standards, remove extra |
| whitespace. |
| * tree-vectorizer.c: Likewise. |
| |
| * tree-vectorizer.c (vectorize_loops): Output statistics to |
| dump_file, fix printf string. |
| (vect_transform_loop): Replace DBG_VECT code with code dumping |
| dependend on TDF_DETAILS to dump_file. |
| (vect_is_supportable_binop): Likewise. |
| (vect_analyze_operations): Likewise. |
| (get_address_calculation_operands): Likewise. |
| (vect_analyze_scalar_cycles): Likewise. |
| (vect_analyze_data_ref_dependence): Likewise. |
| (vect_analyze_data_ref_access): Likewise. |
| (vect_analyze_data_ref_accesses): Likewise. |
| (vect_analyze_data_refs): Likewise. |
| (vect_mark_relevant): Likewise. |
| (vect_get_loop_niters): Likewise. |
| (vect_mark_stmts_to_be_vectorized): Likewise. |
| (vect_analyze_loop_form): Likewise. |
| (vectorize_loops): Likewise. |
| |
| * tree-vectorizer.h (DBG_VEC): Remove. |
| |
| 2004-01-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * doloop.c (doloop_optimize): Update number of iterations for the |
| loops entered at bottom. |
| |
| 2004-01-04 Andreas Jaeger <aj@suse.de> |
| |
| * common.opt: Re-order some options in ASCII collating orders. |
| |
| 2004-01-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> |
| |
| * cfghooks.h (struct cfg_hooks): New fields split_block_after_labels |
| and move_block_after, type of cfgh_make_forwarder_block field changed. |
| (HEADER_BLOCK, LATCH_EDGE): Moved to cfgloop.c. |
| (split_block_after_labels, move_block_after): New macros. |
| (make_forwarder_block): Changed. |
| * cfgloop.c (HEADER_BLOCK, LATCH_EDGE): Moved from cfghooks.h. |
| (update_latch_info, mfb_keep_just, mfb_keep_nonlatch, |
| fill_sons_in_loop): New functions. |
| (canonicalize_loop_headers): Changed due to changes in |
| make_forwarder_block. |
| * cfgloopmanip.c (split_loop_bb): Don't update dominators. |
| (create_preheader): Use make_forwarder_block. |
| (mfb_keep_just, mfb_update_loops): New. |
| * cfgrtl.c (rtl_split_block_after_labels): New. |
| (redirect_edge_with_latch_update): Removed. |
| (rtl_make_forwarder_block): New sematics. |
| (rtl_split_block): Update dominators. |
| (rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): |
| Add rtl_split_block_after_labels. |
| * tree-cfg.c (tree_make_forwarder_block): Changed semantics. |
| (create_blocks_annotations): Removed. |
| (build_tree_cfg): Don't call create_blocks_annotations. |
| (create_bb): Create annotations for a new block. |
| (tree_split_edge): Don't call create_block_annotation. |
| Update irreducible loop information. |
| (tree_loop_optimizer_finalize): Add loop structure check. |
| (tree_redirect_edge_and_branch_1): Return the original edge if |
| no redirecting is neccessary. |
| (tree_split_block): Make the semantics same as for rtl_split_block. |
| (tree_split_block_after_labels, tree_move_block_after): New. |
| (tree_cfg_hooks): Add tree_split_block_after_labels and |
| tree_move_block_after. |
| |
| * cfgloopanal.c (mark_irreducible_loops): Fix. |
| * loop-unswitch.c (unswitch_loop): Fix. |
| |
| * Makefile.in (tree-ssa-loop.o): Add cfgloop.h and tree-inline.h |
| dependency. |
| * jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test, |
| copy_loop_headers): Removed. |
| * rtl.h (copy_loop_headers): Declaration removed. |
| * toplev.c (rest_of_compilation): Do not call loop header copying. |
| * tree-dump.c (dump_files): Add .ch dump. |
| * tree-flow.h (tree_duplicate_bb, copy_loop_headers): Declare. |
| * tree-optimize.c (optimize_function_tree): Add loop header copying |
| pass. |
| * tree-ssa-loop.c: Include cfgloop.h and tree-inline.h. |
| (dump_file, dump_flags): Renamed to loop_dump_file and |
| loop_dump_flags. |
| (call_expr_p, should_duplicate_loop_header_p, copy_loop_headers): |
| New. |
| * tree.h (enum tree_dump_index): Add ch dump. |
| * doc/invoke.texi (-fdump-tree-copy-headers): Document. |
| * testsuite/gcc.dg/tree-ssa/20030711-1.c: Update test outcome. |
| * testsuite/gcc.dg/tree-ssa/20030714-2.c: Ditto. |
| * testsuite/gcc.dg/tree-ssa/copy-headers.c: New test. |
| * tree-cfg.c (tree_duplicate_bb): New function. |
| |
| * tree-ssa-loop-im.c: New file. |
| * Makefile.in (tree-ssa-loop-im.o): Add. |
| * params.def (PARAM_LIM_EXPENSIVE): New parameter. |
| * tree-dump.c (dump_files): Move .loop dump. |
| * cfgloop.h (superloop_at_depth, get_loop_body_in_dom_order): Declare. |
| (loop_dump_file, loop_dump_flags): Declare variables. |
| * cfgloop.c (superloop_at_depth, get_loop_body_in_dom_order): New |
| functions. |
| * tree-flow.h (struct stmt_ann_d): Add aux field. |
| (bsi_commit_edge_inserts): Declaration changed. |
| (tree_ssa_lim): Declare. |
| * tree-mudflap.c (mf_xform_derefs_1): Use in_array_bounds_p. |
| * tree-optimize.c (optimize_function_tree): Move loop optimization |
| pass. |
| * tree-sra.c (scalarize_structures): Modified due to |
| bsi_commit_edge_inserts change. |
| * tree-ssa-loop.c (tree_ssa_loop_opt): Call tree_ssa_lim. |
| * tree-ssa.c (rewrite_trees, rewrite_vars_out_of_ssa): Modified due to |
| bsi_commit_edge_inserts change. |
| * tree.c (in_array_bounds_p): New function. |
| * tree.h (in_array_bounds_p): Declare. |
| (enum tree_dump_index): Move loop dump. |
| * tree-cfg.c (bsi_commit_edge_inserts): Don't take update_annotations |
| argument. |
| |
| * tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ensure that the |
| closed files are not used. |
| |
| * tree-tailcall.c (find_tail_calls, eliminate_tail_call): Update |
| phi nodes for vdefs of the eliminated call. |
| |
| 2004-01-03 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-optimize.c (optimize_function_tree): Move the closing brace of |
| DCE2 to the right place. |
| |
| 2004-01-03 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-vectorizer.c (vect_analyze_operations): Test vectorization_factor |
| before computing modulo. |
| |
| 2004-01-02 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-vectorizer.c (vect_is_supportable_binop): Returns false instead |
| of NULL. |
| |
| 2004-01-02 Richard Henderson <rth@redhat.com> |
| |
| * config/i386/i386.h (UNITS_PER_SIMD_WORD): New. |
| |
| 2004-01-02 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-data-ref.c (vec_analyze_array, vec_array_base_name_differ_p, |
| array_base_name_differ_p): Removed for fixing the previous patch. |
| |
| 2004-01-02 Richard Henderson <rth@redhat.com> |
| |
| * target.h (struct gcc_target): Remove vectype_for_scalar_type. |
| * target-def.h (TARGET_VECTYPE_FOR_SCALAR_TYPE): Remove. |
| * config/rs6000/rs6000.c (rs6000_vectype_for_scalar_type): Remove. |
| (TARGET_VECTYPE_FOR_SCALAR_TYPE): Remove. |
| |
| * tree.c (build_vector_type_with_mode): Rename from make_vector, |
| remove unsignedp argument, update callers. |
| (build_vector_type): New. |
| * tree.h (build_vector_type): Declare it. |
| * tree-vectorizer.c (get_vectype_for_scalar_type): Use it. |
| |
| 2004-01-02 Richard Henderson <rth@redhat.com> |
| |
| * tree-scalar-evolution.c (finalize_scalar_evolutions_analyzer): |
| Clear dump_file. |
| |
| 2004-01-02 Sebastian Pop <s.pop@laposte.net> |
| |
| * tree-data-ref.c (vec_analyze_array): Renamed to analyze_array. |
| (analyze_array): Removed. |
| (find_data_references): Adapted to use the new analyze_array |
| function. |
| (array_base_name_differ_p): Moved to tree-data-ref.h. |
| (vec_array_base_name_differ_p): Removed. |
| * tree-data-ref.h (array_base_name_differ_p): Moved here. |
| * tree-vectorizer.c (vect_analyze_data_ref_dependence): Use |
| array_base_name_differ_p instead of vec_array_base_name_differ_p. |
| (vect_analyze_data_refs): Use analyze_array instead of |
| vec_analyze_array. |
| (vectorize_loops): Remove the initializers and finalizers of the |
| scalar evolution analyzer. |
| |
| 2004-01-01 Dorit Naishlos <dorit@il.ibm.com> |
| |
| * tree-vectorizer.c: New file. Implements loop vectorization |
| pass. |
| * tree-vectorizer.h: New file. |
| * Makefile.in: (tree-vectorizer.c,tree-vectorizer.h): New files. |
| * tree-dump.c: (dump_files): New dump file for the new |
| vectorization pass. |
| * tree.h: (TDI_vect): New dump index for the new vectorization |
| pass. |
| * timevar.def (TV_TREE_VECTORIZATION): Support new |
| vectorization pass. |
| * opts.c: (flag_tree_vetorize): New flag to enable/disable the |
| new vectorization pass. |
| * flags.h: Same. |
| * toplev.c: Same. |
| * common.opt: (ftree-vectorize): Same. |
| * doc/invoke.texi: Document above new options. |
| * tree-optimize.c: (optimize_function_tree): Invoke the new |
| vetorization pass. |
| * tree-flow.h: (struct stmt_ann_d): New field (aux) to allow |
| recording information per stmt. |
| * tree-data-ref.c (vec_analyze_array): New function, exposing |
| API to the vectorizer. |
| (vec_array_base_name_differ_p): New function, exposing API to |
| the vectorizer. |
| * tree-data-ref.h: Same. |
| * defaults.h: (UNITS_PER_SIMD_WORD): Define. |
| * config/rs6000/rs6000.h: (UNITS_PER_SIMD_WORD): Same. |
| * target-def.h (TARGET_VECTYPE_FOR_SCALAR_TYPE): Declare a new |
| target hook for vectorization. |
| * target.h (vectype_for_scalar_type): Same. |
| * config/rs6000/rs6000.c: (rs6000_vectype_for_scalar_type): |
| Implement the above new target hook. |
| |
| 2003-12-31 Sebastian Pop <s.pop@laposte.net> |
| |
| * version.c (version_string): Change the identifier for the |
| sub-branch. |
| |
| 2003-12-31 Sebastian Pop <s.pop@laposte.net> |
| Daniel Berlin <dberlin@dberlin.org> |
| |
| * tree-phinodes.c (create_phi_node): Initialise PHI_MARKED to 0. |
| * tree-scalar-evolution.c (already_visited, |
| node_already_visited_by_ssa_path): Removed. |
| (analyze_evolution): Remove initialisation of already_visited. |
| (construct_schedule): idem. |
| (monev_follow_ssa_edge): use PHI_MARKED for deciding whether |
| to analyze the phi-node. |
| (follow_ssa_edge_and_record_dependences_rec): idem. |
| * tree.h (PHI_MARKED): New macro. |
| (tree_phi_node): Add a field marked. |
| |
| 2003-12-27 Sebastian Pop <s.pop@laposte.net> |
| |
| * Makefile.in (OBJS-common): Added tree-chrec.o |
| tree-scalar-evolution.o, tree-data-ref.o, tree-fold-const.o. |
| (tree-optimize.o): Add dependencies on tree-fold-const.h |
| tree-chrec.h tree-scalar-evolution.h tree-data-ref.h |
| (tree-chrec.o, tree-scalar-evolution.o, tree-data-ref.o, |
| tree-fold-const.o): New rules. |
| * cfgloop.h (loop): New field nb_iterations. |
| (loop_from_num): New function. |
| * common.opt (fscalar-evolutions, fall-data-deps): Added. |
| * flags.h (flag_scalar_evolutions, flag_all_data_deps): Declared. |
| * opts.c (decode_options, common_handle_option): Initialize |
| flag_scalar_evolutions and flag_all_data_deps. |
| * timevar.def (TV_SCALAR_EVOLUTIONS, TV_ALL_DATA_DEPS): New. |
| * toplev.c (flag_scalar_evolutions, flag_all_data_deps): Defined. |
| (lang_independent_options): Add flag_scalar_evolutions and |
| flag_all_data_deps. |
| * tree-dump.c (scev, alldd): New extensions. |
| * tree.h (tree_dump_index): Added TDI_scev and TDI_alldd. |
| * tree-optimize.c (tree-fold-const.h, tree-chrec.h, |
| tree-scalar-evolution.h, tree-data-ref.h): Included. |
| (optimize_function_tree): Added the entry point for the analysis of |
| scalar evolutions and data dependences. |
| * tree-pretty-print.c (tree-fold-const.h, tree-chrec.h): Included. |
| (dump_generic_node): Added code for dumping POLYNOMIAL_CHREC, |
| EXPONENTIAL_CHREC, PERIODIC_CHREC, and INTERVAL_CHREC. |
| * tree.def (INTERVAL_CHREC, POLYNOMIAL_CHREC, EXPONENTIAL_CHREC, |
| PERIODIC_CHREC): New tree nodes. |
| * varray.h (index_in_varray_tree, tree_is_in_varray_tree_p, |
| index_in_varray_int, int_is_in_varray_int_p): New inlined functions. |
| * tree-chrec.c, tree-chrec.h, tree-data-ref.c, tree-data-ref.h, |
| tree-fold-const.c, tree-fold-const.h, tree-scalar-evolution.c, |
| tree-scalar-evolution.h: New files. |
| * doc/invoke.texi (-fdump-scalar-evolutions, -fdump-all-data-deps): |
| Documented. |
| * testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-[01..50].c : New testcases. |
| * testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-[01..50].c.scev: Expected |
| outputs for the scalar evolution analyzer. |
| * testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-{10, 30, 31, 32, 33, 34, |
| 35, 36}.c.alldd: Expected outputs for the data dependence analyzer. |
| * testsuite/gcc.dg/tree-ssa-chrec/tree-ssa-scev.exp: New file. |
| * testsuite/lib/scantree.exp (diff-tree-dumps): New procedure. |
| * ChangeLog.lno: New file. |