1. 10 Mar, 2005 1 commit
    • Makefile.in (tree-optimize.o): Add CFGLOOP_H dependence. · 2b271002
      	* Makefile.in (tree-optimize.o): Add CFGLOOP_H dependence.
      	* cfgloop.c (flow_loop_nodes_find): Export.
      	* cfgloop.h (flow_loop_nodes_find, fix_loop_structure):
      	Declare.
      	* cfgloopmanip.c (fix_loop_structure): New function.
      	* predict.c (predict_loops): Clean up the loops information.
      	* tree-cfg.c (cleanup_tree_cfg_loop): New function.
      	(tree_can_merge_blocks_p, remove_bb, tree_forwarder_block_p): Respect
      	loop structure.
      	* tree-flow.h (cleanup_tree_cfg_loop): Declare.
      	(rewrite_into_loop_closed_ssa): Declaration changed.
      	* tree-loop-linear.c (linear_transform_loops): Add argument to
      	rewrite_into_loop_closed_ssa call.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
      	* tree-ssa-loop-im.c (move_computations): Ditto.
      	* tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
      	* tree-vectorizer.c (vectorize_loops): Ditto.
      	* tree-optimize.c: Include cfgloop.h.
      	(execute_todo): Choose whether to call cleanup_tree_cfg or
      	cleanup_tree_cfg_loop.
      	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables,
      	(tree_unroll_loops_completely): Enable cleanup_tree_cfg_loop call.
      	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Enable
      	cleanup_tree_cfg_loop call.
      	* tree-ssa-loop-manip.c (find_uses_to_rename_bb): New function.
      	(find_uses_to_rename, rewrite_into_loop_closed_ssa): Support
      	work on part of cfg.
      
      From-SVN: r96232
      Zdenek Dvorak committed
  2. 02 Mar, 2005 1 commit
    • cfgloop.h, [...]: Update copyright. · 613c5cd0
      	* cfgloop.h, cfgloopanal.c, cfgloopmanip.c, conflict.c,
      	loop-init.c, loop-unroll.c, print-tree.c, reg-notes.def,
      	config/m68k/m68k.c, config/mips/mips.h,
      	config/rs6000/rs6000-protos.h, doc/contrib.texi,
      	doc/include/gcc-common.texi: Update copyright.
      
      From-SVN: r95781
      Kazu Hirata committed
  3. 01 Mar, 2005 1 commit
    • cfgloop.c (flow_loop_entry_edges_find, [...]): Removed. · 70388d94
      	* cfgloop.c (flow_loop_entry_edges_find, flow_loop_exit_edges_find,
      	flow_loop_pre_header_scan, flow_loop_pre_header_find,
      	flow_loop_scan): Removed.
      	(flow_loop_dump): Do not dump removed fields.
      	(flow_loop_free): Do not free removed fields.
      	(flow_loops_find): Flags argument removed.  Do not call flow_loop_scan.
      	(loop_exit_edge_p): New function.
      	* cfgloop.h (struct loop): Removed fields pre_header, pre_header_edges,
      	num_pre_header_edges, entry_edges, num_entries, exit_edges,
      	num_exits, exits_doms.
      	(LOOP_TREE, LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES,
      	LOOP_EDGES, LOOP_ALL): Removed.
      	(flow_loop_scan): Declaration removed.
      	(loop_exit_edge_p, mark_loop_exit_edges): Declare.
      	* cfgloopmanip.c (create_loop_notes): Do not pass flags to
      	flow_loops_find.
      	* ifcvt.c (mark_loop_exit_edges): Moved to cfgloopanal.c.
      	(if_convert): Call flow_loops_find and flow_loops_free
      	when calling mark_loop_exit_edges.
      	* cfgloopanal.c (mark_loop_exit_edges): Moved from
      	ifcvt.c.  Removed the flow_loops_find, flow_loops_free and
      	free_dominance_info calls.
      	* loop-init.c (flow_loops_find): Ditto.
      	* passes.c (rest_of_handle_branch_prob): Ditto.
      	* lambda-code.c (perfect_nestify): Do not call flow_loops_find.
      	* loop-unroll.c (analyze_insns_in_loop): Do not use
      	EDGE_LOOP_EXIT.
      	* predict.c (predict_loops): Do not call flow_loop_scan.
      	Use get_loop_exit_edges.
      	(tree_estimate_probability): Do not pass flags to flow_loops_find.
      	* tree-if-conv.c (bb_with_exit_edge_p): Take loop as argument.
      	Do not use EDGE_LOOP_EXIT.
      	(tree_if_convert_cond_expr, if_convertible_modify_expr_p): Pass loop
      	to bb_with_exit_edge_p.
      	(if_convertible_loop_p): Do not call flow_loop_scan.  Use
      	loop->single_exit.  Do not use EDGE_LOOP_EXIT.  Pass loop
      	to bb_with_exit_edge_p.
      	(combine_blocks): Pass loop to bb_with_exit_edge_p.  Do not use
      	EDGE_LOOP_EXIT.
      	* tree-loop-linear.c (linear_transform_loops): Do not call
      	flow_loop_scan.  Use loop->single_exit.
      	* tree-vect-analyze.c (vect_analyze_operations): Use loop->single_exit.
      	(vect_analyze_loop_form): Do not call flow_loop_scan.
      	* tree-vect-transform.c (vect_update_ivs_after_vectorizer): Use
      	loop->single_exit.
      	(vect_do_peeling_for_loop_bound): Use loop_preheader_edge and
      	loop->single_exit.
      	* tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
      	slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
      	slpeel_tree_duplicate_loop_to_edge_cfg,
      	slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
      	Use loop_preheader_edge and loop->single_exit.  Do not call
      	flow_loop_scan.
      
      From-SVN: r95738
      Zdenek Dvorak committed
  4. 15 Dec, 2004 1 commit
    • cfgloop.c (flow_loops_dump): Don't print out levels. · 43a613f7
      2004-12-15  Daniel Berlin  <dberlin@dberlin.org>
      
      	* cfgloop.c (flow_loops_dump): Don't print out levels.
      	(flow_loops_find): Don't set loop->levels.
      	(flow_loops_level_compute): Make void.
      	* cfgloop.h (struct loops): Remove levels member.
      	Add comment about loops in parray possibly being NULL.
      
      From-SVN: r92222
      Daniel Berlin committed
  5. 11 Nov, 2004 1 commit
  6. 09 Nov, 2004 2 commits
  7. 02 Nov, 2004 1 commit
    • cfgloop.h (struct loop): Update comment. · 75473b02
      	* cfgloop.h (struct loop): Update comment.
      	* cse.c (cse_main): Remove obsolete comment.
      
      	* expr.h (gen_cond_trap): Move prototype under functions provided
      	by optabs.c.
      	(canonicalize_condition, get_condition): Move to...
      	* rtl.h (canonicalize_condition, get_condition): ...here.
      	(branch_target_load_optimize): Add comment that this function is
      	in bt-load.c.
      	* loop.c (canonicalize_condition, get_condition): Move to...
      	* rtlanal.c (canonicalize_condition, get_condition): ...here.
      	* sched-deps.c (get_condition): Rename to sched_get_condition.
      	(add_dependence): Update this caller.
      
      From-SVN: r89995
      Steven Bosscher committed
  8. 01 Nov, 2004 1 commit
    • cfgloop.h (struct loop): Remove unused "nodes" field. · ccbdbf0a
      	* cfgloop.h (struct loop): Remove unused "nodes" field.
      	* timevar.def (TV_TREE_LOOP_BOUNDS): New.
      	* tree-data-ref.c (find_data_references_in_loop): Use get_loop_body
      	instead of calling flow_bb_inside_loop_p for every basic block
      	in the function.
      	* tree-ssa-loop.c (pass_record_bounds): Use TV_TREE_LOOP_BOUNDS.
      
      From-SVN: r89932
      Jeff Law committed
  9. 25 Oct, 2004 1 commit
  10. 13 Oct, 2004 1 commit
    • Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h. · 86df10e3
      2004-10-11  Sebastian Pop  <pop@cri.ensmp.fr>
      
      	* Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
      	* cfgloop.c (initialize_loops_parallel_p): New.
      	(flow_loops_find): Initialize the parallel_p field to true for all
      	the loops.
      	* tree-ssa-loop-niter.c: Include "tree-data-ref.h".
      	(estimate_numbers_of_iterations_loop): Infers the loop bounds from
      	the size of the data accessed in the loop.
      	(struct nb_iter_bound): Moved...
      	* cfgloop.h (struct nb_iter_bound): ... here.
      	(estimated_nb_iterations, parallel_p): New fields in struct loop.
      	(record_estimate): Declare extern here.
      	* tree-chrec.c: Fix comments.
      	(nb_vars_in_chrec): New function.
      	* tree-chrec.h (nb_vars_in_chrec): Declared here.
      	* tree-data-ref.c: Don't include lambda.h, that is already included
      	in tree-data-ref.h.
      	(tree_fold_divides_p): Don't check for integer_onep.
      	(tree_fold_bezout): Removed.
      	(gcd): New static duplicated function.
      	(int_divides_p, dump_subscript): New.
      	(dump_data_dependence_relation): Use dump_subscript.
      	(dump_dist_dir_vectors, dump_ddrs, compute_estimated_nb_iterations,
      	estimate_niter_from_size_of_data): New.
      	(analyze_array_indexes, analyze_array): Call
      	estimate_niter_from_size_of_data during	the detection of array
      	references.  Pass in a pointer to the statement that contains the
      	array reference.
      	(all_chrecs_equal_p): New.
      	(compute_distance_vector): Renamed compute_subscript_distance.
      	Deal with multivariate conflict functions.
      	(initialize_data_dependence_relation): Initialize DDR_AFFINE_P,
      	DDR_SIZE_VECT, DDR_DIST_VECT, and DDR_DIR_VECT.
      	(non_affine_dependence_relation): New.
      	(analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
      	analyze_siv_subscript, analyze_miv_subscript,
      	analyze_overlapping_iterations, subscript_dependence_tester):
      	Initialize and return last_conflicts function.
      	(initialize_matrix_A, FLOOR, compute_overlap_steps_for_affine_univar,
      	compute_overlap_steps_for_affine_1_2): New.
      	(analyze_siv_subscript_affine_cst): Removed.
      	(analyze_subscript_affine_affine): Disprove dependences based on the
      	iteration domains.  Solve the univariate dependence case as before,
      	but use lambda_matrix_right_hermite instead of tree_fold_bezout.
      	Implement the multivariate case of 2 versus 1 variables.
      	(build_classic_dist_vector, build_classic_dir_vector): Implement some
      	unhandled cases.
      	(find_data_references_in_loop): Compute and initialize
      	loop->estimated_nb_iterations and loop->parallel_p.
      	(analyze_all_data_dependences): Modify the debug dump order.
      	* tree-data-ref.h (SUB_LAST_CONFLICT_IN_A, SUB_LAST_CONFLICT_IN_B,
      	subscript->last_conflict_in_a, subscript->last_conflict_in_b): Removed.
      	(SUB_LAST_CONFLICT, subscript->last_conflict,
      	data_dependence_relation->affine_p, data_dependence_relation->size_vect,
      	DDR_AFFINE_P, DDR_SIZE_VECT): New.
      	(find_data_references_in_loop, initialize_data_dependence_relation,
      	dump_subscript, dump_ddrs, dump_dist_dir_vectors): Declared here.
      
      From-SVN: r88965
      Sebastian Pop committed
  11. 23 Sep, 2004 1 commit
    • cfgloop.h (update_single_exits_after_duplication): Declare. · 92fc4a2f
      	* cfgloop.h (update_single_exits_after_duplication): Declare.
      	(loopify, split_loop_bb): Declaration changed.
      	* cfgloopmanip.c (split_loop_bb): Take void * as an argument instead
      	of rtx.
      	(loopify): Added redirect_all_edges argument.
      	(update_single_exits_after_duplication): Export.
      	* loop-unswitch.c (unswitch_loop): Changed due to loopify change.
      	* tree-flow.h (tree_duplicate_loop_to_header_edge,
      	tree_ssa_loop_version): Declare.
      	* tree-ssa-loop-manip.c (copy_phi_node_args, rename_variables,
      	set_phi_def_stmts, tree_duplicate_loop_to_header_edge,
      	lv_adjust_loop_header_phi, lv_adjust_loop_entry_edge,
      	lv_update_pending_stmts, tree_ssa_loop_version): New functions.
      
      	* tree-ssa-loop-unswitch.c: New file.
      	* Makefile.in (tree-ssa-loop-unswitch.o): Add.
      	* timevar.def (TV_TREE_LOOP_UNSWITCH): New timevar.
      	* tree-flow.h (tree_ssa_unswitch_loops): Declare.
      	* tree-optimize.c (init_tree_optimization_passes): Add pass_unswitch.
      	* tree-pass.h (pass_unswitch): Declare.
      	* tree-ssa-loop.c (tree_ssa_loop_unswitch,
      	gate_tree_ssa_loop_unswitch, pass_unswitch): New pass.
      	* doc/passes.texi: Documen tree level loop unswitching.
      
      	* gcc.dg/tree-ssa/loop-6.c: New test.
      
      From-SVN: r87943
      Zdenek Dvorak committed
  12. 16 Sep, 2004 1 commit
    • [multiple changes] · f67d92e9
      2004-09-16  Daniel Berlin  <dberlin@dberlin.org>
      
      	* cfgloop.h (duplicate_loop):  Add prototype.
      	* cfgloopmanip.c (duplicate_loop): Make non-static.
      	* lambda-code.c (perfect_nestify): Factor out test whether
      	we can handle this loop into separate function.
      	Call it.
      	(can_convert_to_perfect_nest): New function.
      	(replace_uses_of_x_with_y): Add modify_stmt call.
      	* tree-loop-linear.c (linear_transform_loops): Call
      	rewrite_into_loop_closed_ssa and free_df.
      
      2004-09-16  Daniel Berlin  <dberlin@dberlin.org>
      
      	* lambda-code.c (invariant_in_loop): is_gimple_min_invariant is
      	loop invariant as well.
      	(perfect_nestify): new function.
      	(gcc_loop_to_lambda_loop): New parameters to track lower bounds,
      	upper bounds, and steps.
      	Set outerinductionvar properly.
      	(gcc_loopnest_to_lambda_loopnest): Add loops and need_perfect
      	parameters.
      	Return NULL if we need a perfect loop and can't make one.
      	(lambda_loopnest_to_gcc_loopnest): Correct algorithm.
      	(not_interesting_stmt): New function.
      	(phi_loop_edge_uses_def): Ditto.
      	(stmt_uses_phi_result): Ditto.
      	(stmt_is_bumper_for_loop): Ditto.
      	(perfect_nest_p): Ditto.
      	(nestify_update_pending_stmts): Ditto.
      	(replace_uses_of_x_with_y): Ditto.
      	(stmt_uses_op): Ditto.
      	(perfect_nestify): Ditto.
      	* lambda-mat.c (lambda_matrix_id_p): New function.
      	* lambda-trans.c (lambda_trans_matrix_id_p): Ditto.
      	* lambda.h: Update prototypes.
      	* tree-loop-linear (linear_transform_loop): Use new
      	perfect_nest_p. Detect and ignore identity transform.
      	* tree-ssa-loop.c (pass_linear_transform): Use TODO_write_loop_closed.
      
      2004-09-16  Sebastian Pop  <pop@cri.ensmp.fr>
      
      	* tree-loop-linear.c (gather_interchange_stats): Add more comments.
      	Gather also strides of accessed data.  Pass in the data references
      	array.
      	(try_interchange_loops): Add a new heuristic for handling the temporal
      	locality.  Pass in the data references array.
      	(linear_transform_loops): Pass the data references array to
      	try_interchange_loops.
      
      From-SVN: r87607
      Daniel Berlin committed
  13. 14 Sep, 2004 2 commits
    • Makefile.in (loop-unroll.o): Add HASHTAB_H and RECOG_H dependency. · 113d659a
      	* Makefile.in (loop-unroll.o): Add HASHTAB_H and RECOG_H dependency.
      	* basic-block.h (struct reorder_block_def): Add copy_number field.
      	* cfgloop.h (biv_p): Declare.
      	* cfgloopmanip.c (duplicate_loop_to_header_edge): Set copy_number.
      	* common.opt (fsplit-ivs-in-unroller): New flag.
      	* loop-iv.c (biv_p): New function.
      	* loop-unroll.c: Include hashtab.h and recog.h.
      	(struct iv_to_split, struct split_ivs_info): New types.
      	(analyze_ivs_to_split, si_info_start_duplication, split_ivs_in_copies,
      	free_si_info, si_info_hash, si_info_eq, analyze_iv_to_split_insn,
      	determine_split_iv_delta, get_ivts_expr, allocate_basic_variable,
      	insert_base_initialization, split_iv): New functions.
      	(peel_loop_completely, unroll_loop_constant_iterations,
      	unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
      	Use them.
      	* doc/invoke.texi (-fsplit-ivs-in-unroller): Document.
      
      Co-Authored-By: Steven Bosscher <stevenb@suse.de>
      
      From-SVN: r87487
      Zdenek Dvorak committed
    • unroll.c: Removed. · c94583fe
      	* unroll.c: Removed.
      	* loop.h: Removed.
      	* Makefile.in (LOOP_H, unroll.o): Removed.
      	(toplev.o, passes.o, stmt.o, integrate.o, loop.o): Remove LOOP_H
      	dependency.
      	* alias.c (init_alias_analysis): Remove flag_old_unroll_loops
      	reference.
      	* cfgloop.h (LOOP_PREFETCH, loop_optimize): Moved from loop.h.
      	* common.opt (fold-unroll-loops, fold-unroll-all-loops): Removed.
      	* loop.c: Do not include loop.h.
      	(LOOP_INFO, LOOP_MOVABLES, LOOP_REGS, LOOP_IVS, INSN_LUID,
      	REGNO_FIRST_LUID, REGNO_LAST_LUID, enum g_types, struct induction,
      	struct iv_class, enum iv_mode, struct iv, REG_IV_TYPE, REG_IV_INFO,
      	REG_IV_CLASS, struct loop_ivs, struct loop_mem_info, struct loop_reg,
      	struct loop_regs, struct loop_movables, struct loop_info): Moved
      	from loop.h.
      	(back_branch_in_range_p, fold_rtx_mult_add, biv_total_increment,
      	reg_dead_after_loop, final_biv_value, loop_find_equiv_value,
      	find_common_reg_term, loop_iterations, final_giv_value): Moved
      	from unroll.c.
      	(uid_luid, uid_loop, max_uid_for_loop, max_reg_before_loop,
      	loop_dump_stream, for_each_insn_in_loop, express_from,
      	extend_value_for_giv, loop_iv_add_mult_emit_before,
      	loop_iv_add_mult_sink, loop_iv_add_mult_hoist,
      	loop_insn_first_p, get_condition_for_loop,
      	loop_insn_emit_before, loop_insn_hoist,
      	loop_insn_sink): Made static.
      	(loop_invariant_p): Made static.  Removed flag_old_unroll_loops
      	reference.
      	(strength_reduce): Do not call unroller.
      	(record_giv): Do not initialize unrolled field.
      	(prescan_loop): Do not set loop_info->preconditioned.
      	* passes.c: Do not include loop.h.
      	(rest_of_handle_loop_optimize): Do not call unroller.
      	* predict.c: Do not include loop.h.
      	* rtl.h (NOTE_PRECONDITIONED): Removed.
      	* stmt.c: Do not include loop.h.
      	* toplev.c: Do not include loop.h.
      	(process_options): Do not handle flag_old_unroll_loops.
      
      	* doc/invoke.texi (fold-unroll-loops, fold-unroll-all-loops):
      	Documentation removed.
      	* doc/passes.texi (unroll.c, loop.h): Documentation removed.
      
      From-SVN: r87485
      Zdenek Dvorak committed
  14. 05 Sep, 2004 1 commit
    • tree-ssa-loop-ivopts.c: New file. · 8b11a64c
      	* tree-ssa-loop-ivopts.c: New file.
      	* Makefile.in (tree-ssa-loop-ivopts.c): Add.
      	* cfgloop.h (target_avail_regs, target_res_regs, target_small_cost,
      	target_pres_cost, target_spill_cost): Declare.
      	* cfgloopanal.c (avail_regs, res_regs, small_cost, pres_cost,
      	spill_cost): Renamed to ...
      	(target_avail_regs, target_res_regs, target_small_cost,
      	target_pres_cost, target_spill_cost): ... and exported.
      	(init_set_costs, global_cost_for_size): Work with renamed variables.
      	* common.opt (flag_ivopts): New flag.
      	* expr.c (expand_expr_real_1): Handle SSA_NAME case.  Handle
      	REF_ORIGINAL.
      	* gimplify.c (struct gimplify_ctx): Add into_ssa field.
      	(internal_get_tmp_var, gimplify_modify_expr, gimplify_expr): Support
      	generating SSA form.
      	(force_gimple_operand): New function.
      	* timevar.def (TV_TREE_LOOP_IVOPTS): New timevar.
      	* tree-cfg.c (stmt_bsi): New function.
      	* params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
      	PARAM_IV_MAX_CONSIDERED_USES): New.
      	* tree-flow.h (stmt_bsi, tree_ssa_iv_optimize, split_loop_exit_edge,
      	bsi_insert_on_edge_immediate_loop. standard_iv_increment_position,
      	ip_end_pos, ip_normal_pos, force_gimple_operand): Declare.
      	* tree-gimple.c (is_gimple_formal_tmp_var): Accept ssa names.
      	* tree-nested.c (build_addr): Export.
      	* tree-optimize.c (init_tree_optimization_passes): Add
      	pass_iv_optimize.
      	* tree-pass.h (pass_iv_optimize): Declare.
      	* tree-ssa-loop-im.c (for_each_index): Handle REALPART_EXPR and
      	IMAGPART_EXPR.
      	* tree-ssa-loop-manip.c (create_iv): Force the base to be acceptable
      	as a phi node argument.
      	(split_loop_exit_edge, bsi_insert_on_edge_immediate_loop,
      	ip_end_pos, ip_normal_pos, standard_iv_increment_position): New
      	functions.
      	* tree-ssa-loop-niter.c (zero_p, unsigned_type_for): Export.
      	* tree-ssa-loop.c (tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
      	pass_iv_optimize): New pass.
      	* tree-ssa-operands.c (get_indirect_ref_operands): Handle REF_ORIGINAL.
      	* tree-ssanames.c (release_ssa_name): Allow calling with var = NULL.
      	* tree.c (build_int_cst_type, cst_and_fits_in_hwi): New functions.
      	* tree.h (REF_ORIGINAL): New macro.
      	(build_int_cst_type, unsigned_type_for, zero_p,
      	cst_and_fits_in_hwi, build_addr): Declare.
      	* doc/invoke.texi (-fivopts): Document.
      	(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
      	PARAM_IV_MAX_CONSIDERED_USES): Document.
      	* doc/passes.texi: Document induction variable optimizations pass.
      
      	* gcc.dg/tree-ssa/loop-2.c: New test.
      	* gcc.dg/tree-ssa/loop-3.c: New test.
      	* gcc.dg/tree-ssa/loop-4.c: New test.
      	* gcc.dg/tree-ssa/loop-5.c: New test.
      
      From-SVN: r87100
      Zdenek Dvorak committed
  15. 04 Sep, 2004 1 commit
    • Tree level if-conversion for vectorizer. · 40923b20
              * Makefile.in (OBJS-common): Add tree-if-conv.o
              (tree-if-conv.o): New rule.
              * cfgloop.c (flow_loop_exit_edges_find): Set EDGE_LOOP_EXIT flag.
              (get_loop_body_in_bfs_order): New.
              * cfgloop.h (get_loop_body_in_bfs_order): New.
              * tree-flow.h (enum move_pos): Move here from ..
              * tree-ssa-loop-im.c (enum move_pos): here.
              (movement_possibility): Make externally visible.
              * tree-optimize.c (init_tree_optimization_passes): New entry for
              if conversion pass.
              * tree-pass.h (pass_if_conversion): New.
              * tree-ssa-operands.c (get_expr_operands): Handle COND_EXPR.
              * tree-if-conv.c: New file.
              * doc/passes.texi: Document tree if-conversion pass.
              * doc/tree-ssa.texi: Same.
      
              testsuite:
      
              * gcc.dg/tree-ssa/ifc-20040816-1.c: New test.
              * gcc.dg/tree-ssa/ifc-20040816-2.c: New test.
      
      From-SVN: r87073
      Devang Patel committed
  16. 25 Aug, 2004 1 commit
    • cfglayout.c (duplicate_insn_chain): Remove references to NOTE_INSN_LOOP_VTOP and… · 8b63d0e5
      cfglayout.c (duplicate_insn_chain): Remove references to NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
      
      2004-04-25  Paolo Bonzini  <bonzini@gnu.org>
      
      	* cfglayout.c (duplicate_insn_chain): Remove references to
      	NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
      	* cfgloop.h (struct loop): Remove fields vtop, cont and cont_dominator.
      	* cfgrtl.c (rtl_delete_block): Remove handling of NOTE_INSN_LOOP_CONT.
      	* final.c (final_scan_insn): Remove references to NOTE_INSN_LOOP_VTOP
      	and NOTE_INSN_LOOP_CONT.
      	* insn-notes.def (NOTE_INSN_LOOP_VTOP, NOTE_INSN_LOOP_CONT): Remove.
      	* jump.c (squeeze_notes): Remove references to NOTE_INSN_LOOP_VTOP
      	and NOTE_INSN_LOOP_CONT.
      	* loop.c (scan_loops, find_and_verify_loops, for_each_insn_in_loop,
      	check_dbra_loop, loop_dump_aux): Remove references to removed notes
      	and fields.
      	* reorg.c (mostly_true_jump): Do not rely on NOTE_INSN_LOOP_VTOPs.
      	* unroll.c (unroll_loop, copy_loop_body, loop_iterations): Remove
      	references to removed notes and fields.
      	(subtract_reg_term, ujump_to_loop_cont): Remove.
      
      From-SVN: r86542
      Paolo Bonzini committed
  17. 24 Aug, 2004 1 commit
    • tree-ssa-loop-ivcanon.c: New file. · 82b85a85
      	* tree-ssa-loop-ivcanon.c: New file.
      	* tree-ssa-loop-manip.c (create_iv): New function.
      	* Makefile.in (tree-ssa-loop-ivcanon.o): Add.
      	(tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency.
      	* cfgloop.c (mark_single_exit_loops): New function.
      	(verify_loop_structure): Verify single-exit loops.
      	* cfgloop.h (struct loop): Add single_exit field.
      	(LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant.
      	(mark_single_exit_loops): Declare.
      	(tree_num_loop_insns): Declare.
      	* cfgloopmanip.c (update_single_exits_after_duplication): New function.
      	(duplicate_loop_to_header_edge): Use it.
      	* common.opt (fivcanon): New flag.
      	* timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars.
      	* tree-cfg.c (tree_find_edge_insert_loc): Return newly created block.
      	(bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc.
      	(bsi_insert_on_edge_immediate): New function.
      	* tree-flow.h (bsi_insert_on_edge_immediate,
      	canonicalize_induction_variables, tree_unroll_loops_completely,
      	create_iv): Declare.
      	* tree-optimize.c (init_tree_optimization_passes): Add
      	pass_iv_canon and pass_complete_unroll.
      	* tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare.
      	* tree-scalar-evolution.c (get_loop_exit_condition,
      	get_exit_conditions_rec, number_of_iterations_in_loop,
      	scev_initialize): Use single_exit information.
      	* tree-ssa-loop-niter.c (number_of_iterations_cond): Record
      	missing assumptions.
      	(loop_niter_by_eval):  Return number of iterations as unsigned
      	int.
      	* tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops.
      	(tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon,
      	tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll):
      	New passes.
      	(tree_ssa_loop_done): Call free_numbers_of_iterations_estimates.
      	* tree-ssanames.c (make_ssa_name): Allow creating ssa name before
      	the defining statement is ready.
      	* tree-vectorizer.c (vect_create_iv_simple): Removed.
      	(vect_create_index_for_array_ref, vect_transform_loop_bound):
      	Use create_iv.
      	(vect_transform_loop_bound): Use single_exit information.
      	(vect_analyze_loop_form): Cleanup bogus tests.
      	(vectorize_loops): Do not call flow_loop_scan.
      	* tree.h (may_negate_without_overflow_p): Declare.
      	* fold-const.c (may_negate_without_overflow_p): Split out from ...
      	(negate_expr_p): ... this function.
      	(tree_expr_nonzero_p): Handle overflowed constants correctly.
      	* doc/invoke.texi (-fivcanon): Document.
      	* doc/passes.texi: Document canonical induction variable creation.
      
      	* gcc.dg/tree-ssa/loop-1.c: New test.
      
      From-SVN: r86516
      Zdenek Dvorak committed
  18. 18 Aug, 2004 1 commit
    • rtl.def (NIL): Delete. · f822d252
      	* rtl.def (NIL): Delete.
      	* read-rtl.c (read_rtx): Handle (nil) like (define_constants).
      	Tighten the syntax a little.
      
      	* cfgloop.h, combine.c, cse.c, loop-iv.c, postreload.c, reload.c
      	* config/alpha/alpha.c, config/alpha/alpha.h, config/arc/arc.h
      	* config/arm/arm.h, config/frv/frv.h, config/i386/i386.c
      	* config/i386/predicates.md, config/m32r/m32r.h
      	* config/m68hc11/m68hc11.c, config/mcore/mcore.h, config/mips/mips.c
      	* config/mmix/mmix.c, config/pa/pa.h, config/sh/sh.h
      	* config/sparc/sparc.h, doc/tm.texi:
      	Replace all occurrences of NIL with UNKNOWN.
      
      From-SVN: r86193
      Zack Weinberg committed
  19. 12 Jul, 2004 1 commit
    • cfgloop.h (struct loop): Add nb_iterations field. · 9baba81b
      	* cfgloop.h (struct loop): Add nb_iterations field.
      	(current_loops): Declare.
      	* tree-chrec.c (chrec_not_analyzed_yet,
      	chrec_dont_know, chrec_known, count_ev_in_wider_type,
      	chrec_contains_symbols_defined_in_loop): Remove the temporary
      	hooks.
      	* tree-flow-inline.h (loop_containing_stmt): New function.
      	* tree-scalar-evolution.c: Add implementation.
      	* tree-scalar-evolution.h: Add declarations.
      
      From-SVN: r84573
      Sebastian Pop committed
  20. 10 Jul, 2004 1 commit
    • tree-ssa-loop-im.c: New file. · a7e5372d
      	* tree-ssa-loop-im.c: New file.
      	* Makefile.in (tree-ssa-loop-im.o): Add.
      	* cfgloop.c (superloop_at_depth): New function.
      	* cfgloop.h (superloop_at_depth): Declare.
      	* common.opt (ftree-lim): New flag.
      	* expr.c (array_ref_up_bound): New function.
      	* params.def (PARAM_LIM_EXPENSIVE): New parameter.
      	* timevar.def (TV_LIM): New timevar.
      	* tree-dfa.c (compute_immediate_uses): Respect TDFA_USE flags when
      	computing immediate uses of a phi node.
      	* tree-flow.h (struct tree_ann_common_d): Add aux field.
      	(loop_commit_inserts, for_each_index, tree_ssa_lim): Declare.
      	* tree-optimize.c (init_tree_optimization_passes): Add pass_lim.
      	* tree-pass.h (pass_lim): Declare.
      	* tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im): New
      	functions.
      	(pass_lim): New pass structure.
      	* tree-eh.c (tree_could_trap_p): Handle ARRAY_REFs correctly.
      	* tree.c (in_array_bounds_p): New function.
      	* tree.h (TREE_THIS_NOTRAP): Define also for ARRAY_REFs.
      	(in_array_bounds_p, array_ref_up_bound): Declare.
      	* doc/invoke.texi (-ftree-lim, --param lim-expensive): Document.
      	* doc/passes.texi (tree-ssa-loop-im.c): Document.
      
      From-SVN: r84441
      Zdenek Dvorak committed
  21. 09 Jul, 2004 1 commit
    • tree-scalar-evolution.c: New file. · e9eb809d
      	* tree-scalar-evolution.c: New file.
      	* tree-scalar-evolution.h: New file.
      	* tree-ssa-loop-niter.c: New file.
      	* Makefile.in (SCEV_H): New.
      	(tree-scalar-evolution.o, tree-ssa-loop-niter.o): Add new files.
      	* cfgloop.h (struct loop): Add bounds field.
      	* tree-flow.h (struct tree_niter_desc): New type.
      	(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.h (lower_bound_in_type, upper_bound_in_type): Declare.
      	* params.def (PARAM_MAX_ITERATIONS_TO_TRACK): New parameter.
      	* doc/invoke.texi (max-iterations-to-track): Document.
      
      From-SVN: r84340
      Zdenek Dvorak committed
  22. 20 Jun, 2004 1 commit
    • loop-invariant.c: New file. · 5e962776
      	* loop-invariant.c: New file.
      	* Makefile.in (loop-invariant.o): New.
      	* cfgloop.h (global_cost_for_size, init_set_costs,
      	move_loop_invariants): Declare.
      	* cfgloopanal.c (seq_cost, init_set_costs, global_cost_for_size): New
      	functions.
      	(avail_regs, res_regs, small_cost, pres_cost, spill_cost): New
      	variables.
      	* common.opt (floop-optimize2, fmove-loop-invariants): New options.
      	* loop-init.c (loop_optimizer_init): Call init_set_costs.
      	* passes.c (rest_of_handle_loop2): Call move_loop_invariants.
      	(rest_of_compilation): Check flag_loop_optimize2.
      	* toplev.c (process_options): Handle flag_loop_optimize2.
      	* doc/invoke.texi (-floop-optimize2, -fmove-loop-invariants): Document.
      	* doc/passes.texi (loop-invariant.c): Document.
      
      From-SVN: r83419
      Zdenek Dvorak committed
  23. 03 Jun, 2004 1 commit
    • Makefile.in (RA_H, [...]): New. · 59587b18
      2004-06-03  Jerry Quinn  <jlquinn@optonline.net>
      
      	* Makefile.in (RA_H, RESOURCE_H, SCHED_INT_H, CFGLAYOUT_H,
      	CFGLOOP_H, DF_H, DDG_H, TREE_SSA_LIVE_H): New.
      	(TARGET_H): Add insn-modes.h.
      	(tree-ssa.o, tree-cfg.o, tree-ssa-loop.o, toplev.o, passes.o,
      	loop.o, loop-doloop.o, unroll.o, cfgloop.o, cfgloopanal.o,
      	loop-iv.o, cfgloopmanip.o, loop-init.o, loop-unswitch.o,
      	loop-unroll.o, ddg.o, modulo-sched.o, predict.o,
      	cfglayout.o, ifcvt.o): Replace cfgloop.h with CFGLOOP_H.
      	(toplev.o, passes.o, cfghooks.o, cfgloopmanip.o, loop-init.o,
      	loop-unswitch.o, loop-unroll.o, ddg.o, modulo-sched.o,
      	bb-reorder.o, tracer.o, cfglayout.o): Replace cfglayout.h with
      	CFGLAYOUT_H.
      	(ra.o, ra-build.o, ra-colorize.o, ra-debug.o, ra-rewrite.o):
      	Replace ra.h with RA_H.
      	(resource.o, regrename.o, insn-conditions.o, insn-emit.o,
      	insn-recog.o): Replace resource.h with RESOURCE_H.
      	(ddg.o, modulo-sched.o, haifa-sched.o, sched-deps.o, sched-rgn.o,
      	sched-ebb.o, sched-vis.o, out_object_file):  Replace sched-int.h
      	with SCHED_INT_H.
      	(web.o, lcm.o, df.o, ra.o, ra-build.o, ra-colorize.o, ra-debug.o,
      	ra-rewrite.o): Replace df.h with DF_H.
      	(ddg.o, modulo-sched.o): Replace ddf.h with DDG_H.
      	(tree-outof-ssa.o, tree-ssa-live.o, tree-ssa-copyrename.o):
      	Replace tree-ssa-live.h with TREE_SSA_LIVE_H.
      	(insn-conditions.o): Remove unused reload.h.
      	* cfglayout.h: Add include guard.  Include basic-block.h.
      	* cfgloop.h: Add include guard.  Include basic-block.h, rtl.h.
      	* ddg.h: Include sbitmap.h, basic-block.h, df.h.
      	* df.h: Add include guard.  Include bitmap.h, sbitmap.h,
      	basic-block.h.
      	* genconditions.c:  Remove reload.h.
      	* ra.h: Add include guard.  Include bitmap.h, sbitmap.h,
      	hard-reg-set.h, insn-modes.h.
      	* resource.h: Add include guard.  Include hard-reg-set.h.
      	* sched-int.h:  Add include guard.  Include insn-attr.h,
      	basic-block.h, rtl.h.
      	* target.h: Add include guard.  Include insn-modes.h.
      	* tree-ssa-live.h: Include partition.h.
      
      From-SVN: r82600
      Jerry Quinn committed
  24. 13 May, 2004 1 commit
  25. 18 Mar, 2004 1 commit
    • doloop.c: Removed. · 689ba89d
      	* doloop.c: Removed.
      	* loop-doloop.c: New file.
      	* Makefile.in (doloop.o): Remove.
      	(loop-doloop.o): New.
      	* cfgloop.h (get_loop_level, doloop_optimize_loops): Declare.
      	* cfgloopanal.c (get_loop_level): New function.
      	* loop-iv.c (iv_number_of_iterations): Handle case when loop
      	is leaved immediatelly.
      	* loop.c (strength_reduce): Do not call doloop optimization.
      	* loop.h (LOOP_BCT): Removed.
      	* passes.c (rest_of_handle_loop_optimize): Do not use LOOP_BCT.
      	(rest_of_handle_loop2): Call doloop_optimize_loops.
      	(rest_of_compilation): Test for optimizations moved to
      	rest_of_handle_loop2.
      
      From-SVN: r79625
      Zdenek Dvorak committed
  26. 02 Mar, 2004 1 commit
    • cfgloop.h (struct loop_desc): Removed. · f2dca510
      	* cfgloop.h (struct loop_desc): Removed.
      	(struct loop): Fields simple, desc and has_desc removed.
      	(simple_loop_p, count_loop_iterations): Declaration removed.
      	* cfgloopanal.c (struct unmark_altered_insn_data): Removed.
      	(unmark_altered, blocks_invariant_registers, unmark_altered_insn
      	blocks_single_set_registers, invariant_rtx_wrto_regs_p_helper,
      	invariant_rtx_wrto_regs_p, test_for_iteration, constant_iterations,
      	simple_loop_exit_p, variable_initial_value, variable_initial_values,
      	simple_condition_p, simple_increment, count_strange_loop_iterations,
      	inverse, fits_in_mode_p, simple_loop_p, count_loop_iterations):
      	Removed.
      	* loop-iv.c (check_simple_exit, find_simple_exit): Update comments.
      
      From-SVN: r78777
      Zdenek Dvorak committed
  27. 24 Feb, 2004 1 commit
  28. 18 Feb, 2004 1 commit
    • cfgloop.h, [...]: Update copyright. · aa335b76
      gcc/
      	* cfgloop.h, cfgloopanal.c, cpplex.c, except.h, loop-init.c,
      	loop-unroll.c, scan-decls.c, scan.h, stor-layout.c,
      	xcoffout.c, xcoffout.h, config/arm/mmintrin.h,
      	config/mips/linux64.h, config/pa/pa-64.h,
      	config/rs6000/aix51.h, config/rs6000/aix52.h,
      	config/rs6000/spe.md, config/sparc/linux.h,
      	config/sparc/linux64.h: Update copyright.
      
      gcc/cp/
      	* cp-tree.def, cvt.c: Update copyright.
      
      From-SVN: r78032
      Kazu Hirata committed
  29. 17 Feb, 2004 1 commit
    • loop-iv.c: New file. · 50654f6c
      	* loop-iv.c: New file.
      	* Makefile.in (loop-iv.o): New.
      	* basic_block.h (FOR_BB_INSNS, FOR_BB_INSNS_REVERSE): New macros.
      	* cfgloop.c (fill_sons_in_loop, get_loop_body_in_dom_order,
      	num_loop_branches): New functions.
      	* cfgloop.h (get_loop_body_in_dom_order, num_loop_branches,
      	iv_analysis_loop_init, iv_get_reaching_def, iv_analyse, get_iv_value,
      	find_simple_exit, iv_number_of_iterations, iv_analysis_done,
      	get_simple_loop_desc, free_simple_loop_desc): Declare.
      	(simple_loop_desc): New inline function.
      	(struct rtx_iv, struct niter_desc): New.
      	* cfgloopmanip.c (loopify): Specify semantics more precisely.
      	* expr.c (force_operand): Handle subregs of expressions created by
      	loop unroller.
      	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Move
      	parts of the initialization to toplev.c
      	* loop-unroll.c (loop_exit_at_end_p): New.
      	(unroll_and_peel_loops): Call iv_analysis_done.
      	(decide_peel_once_rolling, decide_peel_completely,
      	decide_unroll_stupid, decide_unroll_constant_iterations,
      	decide_unroll_runtime_iterations, decide_peel_simple,
      	peel_loop_simple, unroll_loop_stupid, unroll_loop_constant_iterations,
      	unroll_loop_runtime_iterations): Use new simple loop analysis.
      	* loop-unswitch.c (compare_and_jump_seq): New.
      	(may_unswitch_on_p): Renamed to ...
      	(may_unswitch_on): Use new iv analysis.
      	(reversed_condition): Export.
      	(unswitch_single_loop, unswitch_loop): Use new iv analysis.
      	* predict.c (estimate_probability): Use new simple loop analysis.
      	* rtl.h (get_mode_bounds, reversed_condition,compare_and_jump_seq,
      	canon_condition, simplify_using_condition): Declare.
      	* stor-layout.c (get_mode_bounds): New.
      	* toplev.c (rest_of_handle_loop2): Some parts of
      	initialization/finalization moved here from loop-init.c.
      
      From-SVN: r77951
      Zdenek Dvorak committed
  30. 30 Dec, 2003 1 commit
    • backport: et-forest.h (et_forest_create, [...]): Declarations removed. · d47cc544
      	Backport from tree-ssa (relevant changes only):
      	2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
      
      	* et-forest.h (et_forest_create, et_forest_delete,
      	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
      	et_forest_remove_edge, et_forest_parent,
      	et_forest_common_ancestor, et_forest_node_value,
      	et_forest_enumerate_sons): Declarations removed.
      	(struct et_node): New.
      	(et_new_tree, et_free_tree, et_set_father, et_split, et_nca,
      	et_below): Declare.
      	* et-forest.c (struct et_forest_occurrence, struct et_forest,
      	struct et_forest_node): Removed.
      	(et_forest_create, et_forest_delete,
      	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
      	et_forest_remove_edge, et_forest_parent,
      	et_forest_common_ancestor, et_forest_node_value,
      	et_forest_enumerate_sons, splay, remove_all_occurrences,
      	find_leftmost_node, find_rightmost_node, calculate_value): Removed.
      	(struct et_occ): New.
      	(et_nodes, et_occurences): New.
      	(set_depth, set_depth_add, set_prev, set_next, et_recomp_min,
      	et_check_occ_sanity, et_check_sanity, et_check_tree_sanity,
      	record_path_before_1, record_path_before, check_path_after_1,
      	check_path_after, et_splay, et_new_occ, et_new_tree,
      	et_free_tree, et_set_father, et_split, et_nca, et_below): New.
      	* basic-block.h (struct basic_block_def): New field dom.
      	(struct dominance_info): Type removed.
      	(calculate_dominance_info, free_dominance_info,
      	nearest_common_dominator, set_immediate_dominator,
      	get_immediate_dominator, dominated_by_p, get_dominated_by,
      	add_to_dominance_info, delete_from_dominance_info,
      	recount_dominator, redirect_immediate_dominators,
      	iterate_fix_dominators, verify_dominators): Declarations
      	changed.
      	(enum dom_state): New.
      	(dom_computed): New variable.
      	(first_dom_son, next_dom_son): Declare.
      	* dominance.c (struct dominance_info): Removed.
      	(BB_NODE, SET_BB_NODE): Removed.
      	(calculate_dominance_info, free_dominance_info,
      	nearest_common_dominator, set_immediate_dominator,
      	get_immediate_dominator, dominated_by_p, get_dominated_by,
      	add_to_dominance_info, delete_from_dominance_info,
      	recount_dominator, redirect_immediate_dominators,
      	iterate_fix_dominators, verify_dominators,
      	debug_dominance_info): Work over new datastructure.  Access
      	dominance datastructures through CFG.
      	(assign_dfs_numbers, compute_dom_fast_query, first_dom_son,
      	next_dom_son): New.
      	* bt-load.c (dom): Variable removed.
      	(augment_live_range, combine_btr_defs, migrate_btr_def,
      	migrate_btr_defs, branch_target_load_optimize): Updated for the
      	new interface for dominance information.
      	* cfg.c {exit_entry_blocks): Update initializer.
      	* cfglayout.c (copy_bbs): Removed loops argument. Updated for
      	the new interface for dominance information.
      	* cfglayout.h (copy_bbs): Declaration changed.
      	* cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump,
      	flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated
      	for the new interface for dominance information.
      	(flow_loop_scan): Loops argument removed.
      	(flow_loops_free): Don't release dominators.
      	* cfgloop.h (struct cfg): Dom field removed.
      	(flow_loop_scan, loop_split_edge_with, simple_loop_p,
      	just_once_each_iteration_p, split_loop_bb): Declaration changed.
      	* cfgloopanal.c (simple_loop_exit_p, simple_increment,
      	just_once_each_iteration_p, simple_loop_p): Remove loops argument.
      	Updated for the new interface for dominance information.
      	* cfgloopmanip.c (remove_bbs, find_path, create_preheader,
      	split_loop_bb, loopify, duplicate_loop_to_header_edge,
      	force_single_succ_latches, loop_split_edge_with): Ditto.
      	* gcse.c (dominators): Variable removed.
      	(free_code_hoist_mem, compute_code_hoist_data, hoist_code):
      	Updated for the new interface for dominance information.
      	* ifcvt.c (post_dominators): Variable removed.
      	(mark_loop_exit_edges, merge_if_block, find_if_header,
      	find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
      	Updated for the new interface for dominance information.
      	* loop-init.c (rtl_loop_optimizer_init,
      	rtl_loop_optimizer_finalize): Ditto.
      	* loop-unroll.c (decide_peel_simple, decide_peel_once_rolling,
      	decide_peel_completely, decide_unroll_stupid,
      	decide_unroll_constant_iterations,
      	decide_unroll_runtime_iterations): Loops argument removed.
      	Updated for the new interface for dominance information.
      	(unroll_and_peel_loops, peel_loops_completely,
      	unroll_loop_runtime_iterations): Updated for the new interface for
      	dominance information.
      	* loop-unswitch.c (may_unswitch_on_p, unswitch_loops,
      	unswitch_single_loop, unswitch_loop): Updated for the new
      	interface for dominance information.
      	* predict.c (process_note_predictions, process_note_prediction,
      	estimate_probability, note_prediction_to_br_prob): Ditto.
      	* sched-rgn.c (find_rgns, init_regions): Ditto.
      	* toplev.c (rest_of_handle_branch_prob): Free the dominators.
      
      From-SVN: r75226
      Steven Bosscher committed
  31. 05 Nov, 2003 1 commit
    • cfgloopanal.c (variable_initial_value, [...]): Record the fact that initial… · 142d1f57
      cfgloopanal.c (variable_initial_value, [...]): Record the fact that initial value is extended from inner mode.
      
      	* cfgloopanal.c (variable_initial_value, variable_initial_values,
      	simple_loop_exit_p): Record the fact that initial value is extended
      	from inner mode.
      	(count_strange_loop_iterations, count_loop_iterations): Handle
      	ivs that iterate in a narrower mode. Fix handling of overflows.
      	Improve handling of NE conditions.
      	(inverse, fits_in_mode_p): New static functions.
      	(simple_increment): Detect variables that iterate in a narrower mode.
      	* cfgloop.h (struct loop_desc): Fields inner_mode and extend added.
      
      From-SVN: r73275
      Zdenek Dvorak committed
  32. 05 Jul, 2003 1 commit
    • bt-load.c: Fix comment typos. · 4d6922ee
      	* bt-load.c: Fix comment typos.
      	* c-incpath.c: Likewise.
      	* cfg.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* diagnostic.h: Likewise.
      	* dwarfout.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* et-forest.c: Likewise.
      	* et-forest.h: Likewise.
      	* expr.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* jump.c: Likewise.
      	* langhooks.h: Likewise.
      	* local-alloc.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* loop-unswitch.c: Likewise.
      	* ra-build.c: Likewise.
      	* regclass.c: Likewise.
      	* regmove.c: Likewise.
      	* rtl.def: Likewise.
      	* rtlanal.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* simplify-rtx.c: Likewise.
      	* ssa.c: Likewise.
      	* tracer.c: Likewise.
      	* tree.c: Likewise.
      
      From-SVN: r68975
      Kazu Hirata committed
  33. 03 Jul, 2003 1 commit
    • basic-block.h (create_basic_block, [...]): Kill. · bc35512f
      	* basic-block.h (create_basic_block, merge_blocks_nomove): Kill.
      	* cfgcleanup.c (merge_blocks): Rename to merge_blocks_move.
      	(merge_blocks_move_predecessor_nojumps,
      	 merge_blocks_move_successor_nojumps): Use merge_blocks.
      	(try_optimize_cfg): Use merge_blocks_move.
      	* cfgrtl.c (create_basic_block): Rename to rtl_create_basic_block.
      	(merge_blocks_nomove): Rename to rtl_merge_blocks.
      	(cfg_layout_create_basic_block): New.
      	(rtl_can_merge_blocks): New.
      	(cfg_layout_split_block): Do not alloc aux by hand.
      	* cfghooks.h (cfg_hooks): Add create_basic_block, can_merge_blocks_p,
      	merge_blocks.
      	(create_basic_block, can_merge_blocks_p, merge_blocks): New macros.
      	* cfglayout.c (cfg_layout_duplicate_bb): Do not allocate aux by hand.
      	* cfgloopmanip.c (loop_split_edge_with): Likewise.
      	* ifcvt.c (merge_if_block): Use merge_blocks_nomove.
      
      	* basic-block.h (basic_block_def): Add field 'rbi'.
      	* bb-reorder.c (find_traces, rotate_loop, mark_bb_visited,
      	find_traces_1_round, copy_bb, connect_traces): Update use of rbi.
      	* cfg.c (entry_exit_blocks): Add new field.
      	* cfglayout.c: Include alloc-pool.h;
      	(cfg_layout_pool): New.
      	(record_effective_endpoints, fixup_reorder_chain,
      	fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update use
      	of rbi.
      	(cfg_layout_initialize_rbi): New function.
      	(cfg_layout_initialize): Use it.
      	(cfg_layout_finalize): Clear rbi fields.
      	* cfglayout.h (RBI): Kill.
      	(cfg_layout_initialize_rbi): Declare.
      	* cfgloopmanip.c (copy_bbs): Use rbi.
      	(record_exit_edges): Likewise.
      	(duplicate_loop_to_header_edge): Likewise.
      	* cfgrtl.c (cfg_layout_create_basic_block): Use
      	cfg_layout_initialize_rbi.
      	(cfg_layout_split_block): Use rbi.
      	(cfg_layout_delete_block): Likewise.
      	* loop-init.c (loop_optimizer_finalize): Likewise.
      	* loop-unswitch.c (unswitch_loop): Likewise.
      	* tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
      
      	* cfgrtl.c: Update comments.
      	(try_redirect_by_replacing_jump): New argument.
      	(redirect_branch_edge): Break out from ...
      	(rtl_redirect_edge_and_branch): ... this one.
      	(update_cfg_after_block_merging): Break out from ...
      	(rtl_merge_blocks): ... this one.
      	(cfg_layout_split_edge): New.
      	(cfg_layout_merge_blocks): New.
      	(cfg_layout_can_merge_blocks_p): New.
      	(cfg_layout_redirect_edge_and_branch): Reorganize.
      	(cfg_layout_rtl_cfg_hooks): Fill in.
      	(cfg_layout_delete_block): Kill barriers.
      	* cfganal.c (can_fallthru): Deal with exit blocks
      	* cfglayout.c (cfg_layout_function_header): New function
      	(record_effective_endpoints): Record function header.
      	(fixup_reorder_chain): Fixup dead jumptables; place header
      
      	* basic-block.h (CLEANUP_CFGLAYOUT): New flag.
      	* bb-reorder.c (cfg_layout_initialize): Update call.
      	* cfgcleanup.c (try_optimize_cfg): Supress optimizations of fallthru
      	edges in cfglayout mode.
      	* cfglayout.c (cleanup_unconditional_jumps): Kill.
      	(cfg_layout_initialize): Kill agrument loops; use cfgcleanup.
      	* cfglayout.h (cfg_layout_initialize): Update prototype.
      	* cfgloop.h (CP_INSIDE_CFGLAYOUT): Kill.
      	* cfgloopmanip.c (loop_split_edge_with): Use split_edge.
      	* flow.c (propagate_block): Do not crash when basic block ends
      	by first insn in the chain.
      	* loop-init.c (loop_optimizer_init):  First enter cfglayout mode; later
      	do loop discovery.
      	* tracer.c (tracer): Update call of cfg_layout_initialize.
      
      From-SVN: r68899
      Jan Hubicka committed
  34. 22 Jun, 2003 1 commit
    • caller-save.c: Convert to ISO C90. · d329e058
      	* caller-save.c: Convert to ISO C90.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgbuild.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfglayout.c: Likewise.
      	* cfglayout.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmainip.c: Likewise.
      	* cfgrtl.c: Likewise.
      
      From-SVN: r68331
      Andreas Jaeger committed
  35. 12 Jun, 2003 1 commit
    • ChangeLog: Follow spelling conventions. · 6356f892
      	* ChangeLog: Follow spelling conventions.
      	* ChangeLog.2: Likewise.
      	* c-decl.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cgraph.c: Likewise.
      	* coverage.c: Likewise.
      	* cppcharset.c: Likewise.
      	* cpphash.h: Likewise.
      	* cpplex.c: Likewise.
      	* cpplib.c: Likewise.
      	* dbxout.c: Likewise.
      	* df.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarfout.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* explow.c: Likewise.
      	* gcov-io.c: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* gengtype.c: Likewise.
      	* ggc.h: Likewise.
      	* opts.c: Likewise.
      	* real.c: Likewise.
      	* reload.c: Likewise.
      	* stmt.c: Likewise.
      
      From-SVN: r67849
      Kazu Hirata committed
  36. 05 Mar, 2003 1 commit
    • basic-block.h (EDGE_IRREDUCIBLE_LOOP, [...]): New. · 35b07080
      	* basic-block.h (EDGE_IRREDUCIBLE_LOOP, EDGE_ALL_FLAGS): New.
      	* cfg.c (dump_edge_info): Add EDGE_IRREDUCIBLE_LOOP flag dump.
      	* cfgloop.c (flow_loop_free): Made global.
      	(establish_preds): New static function.
      	(flow_loop_tree_node_add): Handle subloops of added loop correctly.
      	(get_loop_exit_edges): New.
      	(verify_loop_structure): Verify EDGE_IRREDUCIBLE_LOOP flags.
      	* cfgloop.h (flow_loop_free, get_loop_exit_edges, unloop): Declare.
      	* cfgloopanal.c (mark_irreducible_loops): Mark edges in irreducible
      	loops.
      	* cfgloopmanip.c (loop_delete_branch_edge): Allow to test for
      	removability of an edge.
      	(fix_irreducible_loops): New static function.
      	(find_path, remove_path): Add ability to remove enclosing loops.
      	(unloop): New.
      	(copy_bbs, duplicate_loop_to_header_edge): Use EDGE_IRREDUCIBLE_LOOP
      	flags.
      	* cfgrtl.c (verify_flow_info): Handle EDGE_IRREDUCIBLE_LOOP flag.
      	* loop-unroll.c (peel_loops_completely): Do not duplicate loop if
      	not neccessary.
      	(decide_peel_completely, peel_loops_completely): Allow complete peeling
      	of non-duplicable once rolling loops.
      	* loop-unswitch.c (unswitch_loop): Update EDGE_IRREDUCIBLE_LOOP flags.
      
      From-SVN: r63864
      Zdenek Dvorak committed
  37. 26 Feb, 2003 1 commit
    • cse.c (count_reg_usage): Fix handling of REG_EQUAL notes. · b17d5d7c
      	* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
      
      	* Makefile.in (loop-unroll.o): New.
      	* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
      	(unroll_and_peel_loops): Declare.
      	* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
      	flag_old_unroll_loops.
      	* loop.c (loop_invariant_p): Ditto.
      	* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
      	flag_old_unroll_all_loops.
      	* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
      	(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
      	* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
      	(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
      	PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
      	PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
      	PARAM_MAX_ONCE_PEELED_INSNS): New.
      	* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
      	(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
      	instead of old one.
      	(flag_peel_loops): New.
      	(lang_independent_options): The new flags added.
      	(rest_of_compilation): Call new unroller.
      	(process_options): Setup flags for coexistence of old and new unroller.
      	* doc/invoke.texi: Document new options.
      	* doc/passes.texi: Document new unroller pass.
      
      From-SVN: r63462
      Zdenek Dvorak committed
  38. 08 Feb, 2003 1 commit
    • cfgloop.h (fix_loop_placement, [...]): Declare. · 617b465c
      	* cfgloop.h (fix_loop_placement, can_duplicate_loop_p,
      	duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
      	Declare.
      	(DLTHE_FLAG_UPDATE_FREQ): New.
      	* cfgloopmanip.c (duplicate_loop, duplicate_subloops, copy_loops_to,
      	loop_redirect_edge, loop_delete_branch_edge, copy_bbs, remove_bbs,
      	rpe_enum_p, find_branch, alp_enum_p, add_loop, fix_loop_placements,
      	fix_bb_placement, fix_bb_placements, place_new_loop,
      	scale_loop_frequencies, scale_bbs_frequencies, record_exit_edges):
      	New static functions.
      	(fix_loop_placement, can_duplicate_loop_p,
      	duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
      	New functions.
      
      	* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize,
      	unswitch_loops): Declare.
      	* loop-init.c: New file.
      	* loop-unswitch.c: New file.
      	* Makefile.in (loop-init.o, loop-unswitch.o): New.
      	* params.def (PARAM_MAX_UNSWITCH_INSNS, PARAM_MAX_UNSWITCH_LEVEL): New.
      	* toplev.c (DFI_loop2): New dump.
      	(flag_unswitch_loops): New.
      	(lang_independent_options): Add it.
      	(rest_of_compilation): Call new loop optimizer.
      	(parse_options_and_default_flags): Turn flag_unswitch_loops on with -O3.
      
      From-SVN: r62578
      Zdenek Dvorak committed