1. 06 Feb, 2007 1 commit
    • tree-vectorizer.c (vect_is_simple_use): Support induction. · fbf798fc
      2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
                  Victor Kaplansky  <victork@il.ibm.com>
      
              * tree-vectorizer.c (vect_is_simple_use): Support induction.
              (vect_is_simple_reduction): Support reduction with induction as
              one of the operands.
              (vect_is_simple_iv_evolution): Fix formatting.
              * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
              formatting.  Don't mark induction phis for vectorization.
              (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
              * tree-vect-transform.c (get_initial_def_for_induction): New function.
              (vect_get_vec_def_for_operand): Support induction.
              (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
              induction case.
              (vectorizable_reduction): Support reduction with induction as one of
              the operands.
              (vectorizable_type_demotion): Use def-type of stmt argument rather
              than dummy def-type.
      
              * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
              flag_tree_scev_cprop.
              * common.opt (tree-scev-cprop): New flag.
      
              * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
              call to vect_get_new_vect_var.
      
      
      Co-Authored-By: Victor Kaplansky <victork@il.ibm.com>
      
      From-SVN: r121643
      Dorit Nuzman committed
  2. 12 Jan, 2007 1 commit
    • loop.texi: Document recording of loop exits. · 6270df4c
      	* doc/loop.texi: Document recording of loop exits.
      	* cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
      	(update_single_exits_after_duplication,
      	update_single_exit_for_duplicated_loop,
      	update_single_exit_for_duplicated_loops): Removed.
      	(duplicate_loop_to_header_edge): Do not call
      	update_single_exits_after_duplication and
      	update_single_exit_for_duplicated_loops.
      	(loop_version): Do not update single_exit information.
      	(fix_loop_structure): Use record_loop_exits instead of
      	mark_single_exit_loops.
      	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
      	the lists of loop exits.
      	* cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
      	split_edge, merge_blocks): Update the lists of loop exits.
      	* modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
      	loop_optimizer_init.
      	* loop-init.c (loop_optimizer_init): Call record_loop_exits instead
      	of mark_single_exit_loops.
      	(loop_optimizer_finalize): Call release_recorded_exits.
      	* tree-ssa-loop.c (tree_loop_optimizer_init): Pass
      	LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
      	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
      	update single exit information.
      	* lambda-code.c (perfect_nestify): Ditto.
      	* cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
      	(mark_single_exit_loops): Removed.
      	(alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
      	get_exit_descriptions, rescan_loop_exit, record_loop_exits,
      	dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
      	functions.
      	(get_loop_exit_edges, single_exit): Use recorded exit lists.
      	(add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
      	(verify_loop_structure): Verify consistency of the exit lists.
      	(flow_loops_find): Use alloc_loop.  Initialize exits hash.
      	(set_single_exit): Removed.
      	* cfgloop.h (struct loop_exit): New function.
      	(struct loop): single_exit_ field replaced by exits field.
      	(LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
      	(struct loops): Added exits hash.
      	(mark_single_exit_loops, set_single_exit): Declaration removed.
      	(release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
      
      From-SVN: r120728
      Zdenek Dvorak committed
  3. 25 Nov, 2006 1 commit
    • tree-vrp.c (execute_vrp): Do not pass loops structure through arguments. · d73be268
      	* tree-vrp.c (execute_vrp): Do not pass loops structure through
      	arguments.
      	* loop-unswitch.c (unswitch_loops, unswitch_single_loop,
      	unswitch_loop): Ditto.
      	* tree-loop-linear.c (linear_transform_loops): Ditto.
      	* tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
      	tree_ssa_lim): Ditto.
      	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
      	free_numbers_of_iterations_estimates): Ditto.
      	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
      	tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
      	* cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
      	remove_path, add_loop, loopify, unloop, fix_loop_placements,
      	place_new_loop, duplicate_loop, duplicate_subloops,
      	update_single_exit_for_duplicated_loops, copy_loops_to,
      	duplicate_loop_to_header_edge, create_preheaders,
      	force_single_succ_latches, loop_version, fix_loop_structure):
      	Ditto.
      	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
      	tree_unroll_loop): Ditto.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
      	* tree-scalar-evolution.c (select_loops_exit_conditions,
      	scev_initialize, scev_analysis): Ditto.
      	* tree-scalar-evolution.h (scev_initialize): Ditto.
      	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
      	* cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
      	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
      	* modulo-sched.c (sms_schedule): Ditto.
      	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
      	* loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
      	rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
      	* ifcvt.c (if_convert): Ditto.
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
      	canonicalize_loop_induction_variables,
      	canonicalize_induction_variables,
      	tree_unroll_loops_completely, remove_empty_loops): Ditto.
      	* tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
      	tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
      	tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
      	tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
      	tree_ssa_loop_done): Ditto.
      	* predict.c (predict_loops, tree_estimate_probability, estimate_loops,
      	estimate_bb_frequencies): Ditto.
      	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
      	slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
      	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
      	decide_unrolling_and_peeling, peel_loop_completely,
      	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
      	peel_loop_simple, unroll_loop_stupid): Ditto.
      	* loop-doloop.c (doloop_optimize_loops): Ditto.
      	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
      	* loop-invariant.c (move_loop_invariants): Ditto.
      	* tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
      	* tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
      	tree_ssa_prefetch_arrays): Ditto.
      	* lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
      	Ditto.
      	* tree-vect-transform.c (vect_do_peeling_for_loop_bound,
      	vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
      	* cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
      	mark_single_exit_loops, cancel_loop, cancel_loop_tree,
      	verify_loop_structure): Ditto.
      	* tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
      	canonicalize_induction_variables, tree_unroll_loops_completely,
      	tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
      	estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
      	tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
      	tree_unroll_loop, linear_transform_loops): Declaration changed.
      	* basic-block.h: Remove declaration of struct loops.
      	* cfghooks.h (struct cfg_hooks): Change type of
      	cfg_hook_duplicate_loop_to_header_edge.
      	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
      	* tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
      	vect_transform_loop): Declaration changed.
      	* lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
      	* cfgloop.h (flow_loops_dump, fix_loop_structure,
      	mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
      	cancel_loop_tree, create_preheaders, force_single_succ_latches,
      	verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
      	loopify, loop_version, remove_path, unswitch_loops,
      	unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
      	Declaration changed.
      
      From-SVN: r119189
      Zdenek Dvorak committed
  4. 17 Nov, 2006 1 commit
    • tree-vrp.c (execute_vrp): Do not update current_loops. · 598ec7bd
      	* tree-vrp.c (execute_vrp): Do not update current_loops.
      	* loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
      	* doc/loop.texi: Remove documentation for cancelled functions.
      	* tree-ssa-loop-im.c (loop_commit_inserts): Removed.
      	(move_computations, determine_lsm): Use bsi_commit_edge_inserts
      	instead.
      	* cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
      	(remove_path): Ensure that in delete_basic_blocks, the loops
      	are still allocated.
      	(add_loop): Work on valid loop structures.
      	(loopify): Modify call of add_loop.
      	(mfb_update_loops): Removed.
      	(create_preheader): Do not update loops explicitly.
      	(force_single_succ_latches, loop_version): Do not use
      	loop_split_edge_with.
      	(loop_split_edge_with): Removed.
      	* tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
      	Do not use bsi_insert_on_edge_immediate_loop.
      	(split_loop_exit_edge, tree_unroll_loop): Do not use
      	loop_split_edge_with.
      	(bsi_insert_on_edge_immediate_loop): Removed.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops.  Do not
      	use loop_split_edge_with.
      	* cfghooks.c: Include cfgloop.h.
      	(verify_flow_info): Verify that loop_father is filled iff current_loops
      	are available.
      	(redirect_edge_and_branch_force, split_block, delete_basic_block,
      	split_edge, merge_blocks, make_forwarder_block, duplicate_block):
      	Update cfg.
      	* cfgloopanal.c (mark_irreducible_loops): Work if the function contains
      	no loops.
      	* modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
      	loop_split_edge_with.
      	(sms_schedule): Use current_loops.
      	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
      	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
      	current_loops.
      	(rtl_loop_init, rtl_loop_done): Do not set current_loops.
      	* tree-ssa-sink.c (execute_sink_code): Use current_loops.
      	* ifcvt.c (if_convert): Ditto.
      	* predict.c (predict_loops): Do not clear current_loops.
      	(tree_estimate_probability): Use current_loops.
      	(propagate_freq): Receive head of the region to propagate instead of
      	loop.
      	(estimate_loops_at_level): Do not use shared to_visit bitmap.
      	(estimate_loops): New function.  Handle case current_loops == NULL.
      	(estimate_bb_frequencies): Do not allocate tovisit.  Use
      	estimate_loops.
      	* tree-ssa-loop.c (current_loops): Removed.
      	(tree_loop_optimizer_init): Do not return loops.
      	(tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
      	* tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
      	slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
      	Do not update loops explicitly.
      	* function.h (struct function): Add x_current_loops field.
      	(current_loops): New macro.
      	* tree-if-conv.c (combine_blocks): Do not update loops explicitly.
      	* loop-unroll.c (split_edge_and_insert): New function.
      	(unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
      	use loop_split_edge_with.
      	* loop-doloop.c (add_test, doloop_modify): Ditto.
      	* tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
      	* cfglayout.c (copy_bbs): Do not update loops explicitly.
      	* lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
      	* tree-vect-transform.c (vect_transform_loop): Do not update loops
      	explicitly.
      	* cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
      	(flow_loops_free): Do not free dfs_order and rc_order.
      	(flow_loops_find): Do not set dfs_order and rc_order in loops
      	structure.  Do not call loops and flow info verification.
      	(add_bb_to_loop, remove_bb_from_loops): Check whether the block
      	already belongs to some loop.
      	* cfgloop.h (struct loops): Remove struct cfg.
      	(current_loops, loop_split_edge_with): Declaration removed.
      	(loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
      	* tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
      	Declaration removed.
      	* Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
      	* basic-block.h (split_edge_and_insert): Declare.
      	* tree-cfg.c (remove_bb): Do not update loops explicitly.
      
      From-SVN: r118931
      Zdenek Dvorak committed
  5. 12 Nov, 2006 1 commit
  6. 11 Nov, 2006 1 commit
  7. 06 Sep, 2006 1 commit
    • re PR tree-optimization/28937 (ICE in add_virtual_operand, at tree-ssa-operands.c:1309) · c7f965b6
      2006-09-05  Andrew Pinski  <pinskia@physics.uc.edu>
      
              PR tree-opt/28937
              * tree-flow.h (tree_ssa_unswitch_loops): Return unsigned int.
              (canonicalize_induction_variables): Likewise.
              (tree_unroll_loops_completely): Likewise.
              (tree_ssa_prefetch_arrays): Likewise.
              (remove_empty_loops): Likewise.
              * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Return
              TODO_cleanup_cfg instead of directly calling
              cleanup_tree_cfg_loop.
              * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
              Likewise.
              (tree_unroll_loops_completely): Likewise.
              (remove_empty_loops): Likewise.
              * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Likewise.
              * tree-ssa-loop.c (tree_ssa_loop_unswitch): Use the return value
              of tree_ssa_unswitch_loops.
              (tree_ssa_loop_ivcanon): Use the return value of
              canonicalize_induction_variables.
              (tree_ssa_empty_loop): Use the return value of
              remove_empty_loops.
              (tree_complete_unroll): Use the return value of
              tree_unroll_loops_completely.
              (tree_ssa_loop_prefetch): Use the return value of
              tree_ssa_prefetch_arrays.
              * passes.c (execute_todo): Before Cleanup CFG, set
              updating_used_alone and after cleanup CFG, call
              recalculate_used_alone.
      2006-09-05  Andrew Pinski  <pinskia@physics.uc.edu>
      
              PR tree-opt/28937
              * g++.dg/opt/unroll2.C: New test.
      
      From-SVN: r116717
      Andrew Pinski committed
  8. 02 Mar, 2006 1 commit
    • tree-vrp.c (execute_vrp): Return value. · c2924966
      2006-03-02  Daniel Berlin <dberlin@dberlin.org>
      
      	* gcc/tree-vrp.c (execute_vrp): Return value.
      	* gcc/regrename.c (rest_of_handle_regrename): Ditto.
      	* gcc/tree-into-ssa.c (rewrite_into_ssa): Ditto.
      	* gcc/tree-complex.c (tree_lower_complex): Ditto.
      	(tree_lower_complex_O0): Ditto.
      	* gcc/tracer.c (rest_of_handle_tracer): Ditto.
      	* gcc/postreload-gcse.c (rest_of_handle_gcse2): Ditto.
      	* gcc/postreload.c (rest_of_handle_postreload): Ditto.
      	* gcc/tree-tailcall.c (execute_tail_recursion): Ditto.
      	(execute_tail_calls): Ditto.
      	* gcc/tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
      	* gcc/tree.h (init_function_for_compilation): Ditto.
      	* gcc/ipa-cp.c (ipcp_driver): Ditto.
      	* gcc/tree-scalar-evolution.c (scev_const_prop): Ditto.
      	* gcc/tree-scalar-evolution.h (scev_const_prop): Ditto.
      	* gcc/final.c (compute_alignments): Ditto.
      	(rest_of_handle_final): Ditto.
      	(rest_of_handle_shorten_branches): Ditto.
      	(rest_of_clean_state): Ditto.
      	* gcc/omp-low.c (execute_expand_omp): Ditto.
      	(execute_lower_omp): Ditto.
      	* gcc/tree-ssa-dse.c (tree_ssa_dse): Ditto.
      	* gcc/ipa-reference.c (static_execute): Ditto.
      	* gcc/tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
      	* gcc/reorg.c (rest_of_handle_delay_slots): Ditto.
      	(rest_of_handle_machine_reorg): Ditto.
      	* gcc/cgraphunit.c (rebuild_cgraph_edges): Ditto.
      	* gcc/flow.c (recompute_reg_usage): Ditto.
      	(rest_of_handle_remove_death_notes): Ditto.
      	(rest_of_handle_life): Ditto.
      	(rest_of_handle_flow2): Ditto.
      	* gcc/tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
      	* gcc/tree-ssa-ccp.c (do_ssa_ccp): Ditto.
      	(do_ssa_store_ccp): Ditto.
      	(execute_fold_all_builtins): Ditto.
      	* gcc/mode-switching.c (rest_of_handle_mode_switching): Ditto.
      	* gcc/modulo-sched.c (rest_of_handle_sms): Ditto.
      	* gcc/ipa-pure-const.c (static_execute): Ditto.
      	* gcc/cse.c (rest_of_handle_cse): Ditto.
      	(rest_of_handle_cse2): Ditto.
      	* gcc/web.c (rest_of_handle_web): Ditto.
      	* gcc/tree-stdarg.c (execute_optimize_stdarg): Ditto.
      	* gcc/tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
      	* gcc/tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
      	* gcc/tree-nrv.c (tree_nrv): Ditto.
      	(execute_return_slot_opt): Ditto.
      	* gcc/tree-ssa-alias.c (compute_may_aliases): Ditto.
      	(create_structure_vars): Ditto.
      	* gcc/loop-init.c (rtl_loop_init): Ditto.
      	(rtl_loop_done): Ditto.
      	(rtl_move_loop_invariants): Ditto.
      	(rtl_unswitch): Ditto.
      	(rtl_unroll_and_peel_loops): Ditto.
      	(rtl_doloop): Ditto.
      	* gcc/gimple-low.c (lower_function_body): Ditto.
      	(mark_used_blocks): Ditto.
      	* gcc/tree-ssa-sink.c (execute_sink_code): Ditto.
      	* gcc/ipa-inline.c (cgraph_decide_inlining): Ditto.
      	(cgraph_early_inlining): Ditto.
      	* gcc/global.c (rest_of_handle_global_alloc): Ditto.
      	* gcc/jump.c (cleanup_barriers): Ditto.
      	(purge_line_number_notes): Ditto.
      	* gcc/ifcvt.c (rest_of_handle_if_conversion): Ditto.
      	(rest_of_handle_if_after_reload): Ditto.
      	* gcc/tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
      	(tree_ssa_loop_im): Ditto.
      	(tree_ssa_loop_unswitch): Ditto.
      	(tree_vectorize): Ditto.
      	(tree_linear_transform): Ditto.
      	(tree_ssa_loop_ivcanon): Ditto.
      	(tree_ssa_empty_loop): Ditto.
      	(tree_ssa_loop_bounds): Ditto.
      	(tree_complete_unroll): Ditto.
      	(tree_ssa_loop_prefetch): Ditto.
      	(tree_ssa_loop_ivopts): Ditto.
      	(tree_ssa_loop_done): Ditto.
      	* gcc/predict.c (tree_estimate_probability): Ditto.
      	* gcc/recog.c (split_all_insns_noflow): Ditto.
      	(rest_of_handle_peephole2): Ditto.
      	(rest_of_handle_split_all_insns): Ditto.
      	* gcc/tree-eh.c (lower_eh_constructs): Ditto.
      	* gcc/regmove.c (rest_of_handle_regmove): Ditto.
      	(rest_of_handle_stack_adjustments): Ditto.
      	* gcc/local-alloc.c (rest_of_handle_local_alloc): Ditto.
      	* gcc/function.c (instantiate_virtual_regs): Ditto.
      	(init_function_for_compilation): Ditto.
      	(rest_of_handle_check_leaf_regs): Ditto.
      	* gcc/gcse.c (rest_of_handle_jump_bypass): Ditto.
      	(rest_of_handle_gcse): Ditto.
      	* gcc/ipa-type-escape.c (type_escape_execute): Ditto.
      	* gcc/alias.c (rest_of_handle_cfg): Ditto.
      	* gcc/tree-if-conv.c (main_tree_if_conversion): Ditto.
      	* gcc/profile.c (rest_of_handle_branch_prob): Ditto.
      	* gcc/tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
      	* gcc/rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
      	* gcc/bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
      	* gcc/tree-dfa.c (find_referenced_vars): Ditto.
      	* gcc/except.c (set_nothrow_function_flags): Ditto.
      	(convert_to_eh_region_ranges): Ditto.
      	(rest_of_handle_eh): Ditto.
      	* gcc/emit-rtl.c (unshare_all_rtl): Ditto.
      	(remove_unnecessary_notes): Ditto.
      	* gcc/except.h (set_nothrow_function_flags): Ditto.
      	(convert_to_eh_region_ranges): Ditto.
      	* gcc/cfgexpand.c (tree_expand_cfg): Ditto.
      	* gcc/tree-cfgcleanup.c (merge_phi_nodes): Ditto.
      	* gcc/tree-ssa-pre.c (do_pre): Ditto.
      	(execute_fre): Ditto.
      	* gcc/cfgcleanup.c (rest_of_handle_jump): Ditto.
      	(rest_of_handle_jump2): Ditto.
      	* gcc/tree-sra.c (tree_sra): Ditto.
      	* gcc/tree-mudflap.c (execute_mudflap_function_ops): Ditto.
      	(execute_mudflap_function_decls): Ditto.
      	* gcc/tree-ssa-copy.c (do_copy_prop): Ditto.
      	(do_store_copy_prop): Ditto.
      	* gcc/ipa-prop.h (ipcp_driver): Ditto.
      	* gcc/cfglayout.c (insn_locators_initialize): Ditto.
      	* gcc/tree-ssa-forwprop.c
      	(tree_ssa_forward_propagate_single_use_vars): Ditto.
      	* gcc/cfglayout.h (insn_locators_initialize): Ditto.
      	* gcc/tree-ssa-dce.c (tree_ssa_dce): Ditto.
      	* gcc/tree-ssa.c (execute_early_warn_uninitialized): Ditto.
      	(execute_late_warn_uninitialized): Ditto.
      	* gcc/rtl.h (cleanup_barriers): Ditto.
      	(split_all_insns_noflow): Ditto.
      	(purge_line_number_notes): Ditto.
      	(unshare_all_rtl): Ditto.
      	(remove_unnecessary_notes): Ditto.
      	(recompute_reg_usage): Ditto.
      	(variable_tracking_main): Ditto.
      	* gcc/integrate.c (emit_initial_value_sets): Ditto.
      	* gcc/integrate.h (emit_initial_value_sets): Ditto.
      	* gcc/tree-optimize.c (execute_free_datastructures): Ditto
      	(execute_free_cfg_annotations): Ditto.
      	(execute_fixup_cfg): Ditto.
      	(execute_cleanup_cfg_pre_ipa): Ditto.
      	(execute_cleanup_cfg_post_optimizing): Ditto.
      	(execute_init_datastructures): Ditto.
      	* gcc/tree-object-size.c (compute_object_sizes): Ditto.
      	* gcc/combine.c (rest_of_handle_combine): Ditto.
      	* gcc/tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
      	* gcc/bb-reorder.c (duplicate_computed_gotos): Ditto.
      	(rest_of_handle_reorder_blocks): Ditto.
      	(rest_of_handle_partition_blocks): Ditto.
      	* gcc/var-tracking.c (variable_tracking_main): Ditto.
      	* gcc/tree-profile.c (tree_profiling): Ditto.
      	* gcc/tree-vect-generic.c (expand_vector_operations): Ditto.
      	* gcc/reg-stack.c (rest_of_handle_stack_regs): Ditto.
      	* gcc/sched-rgn.c (rest_of_handle_sched): Ditto.
      	(rest_of_handle_sched2): Ditto.
      	* gcc/basic-block.h (free_bb_insn): Ditto.
      	* gcc/tree-ssa-structalias.c (ipa_pta_execute): Ditto.
      	* gcc/tree-cfg.c (execute_build_cfg): Ditto.
      	(remove_useless_stmts): Ditto.
      	(split_critical_edges): Ditto.
      	(execute_warn_function_return): Ditto.
      	(execute_warn_function_noreturn): Ditto.
      	* gcc/tree-ssa-reassoc.c (execute_reassoc): Ditto.
      	* gcc/cfgrtl.c (free_bb_for_insn): Ditto.
      	* gcc/passes.c (execute_one_pass): Run additional
      	todos returned by execute function.
      	* gcc/tree-pass.h (struct tree_opt_pass): Make execute
      	return a value.
      
      From-SVN: r111643
      Daniel Berlin committed
  9. 27 Feb, 2006 1 commit
    • opts.c (decode_options): Do not handle flag_strength_reduce. · efa1cdf0
      	* opts.c (decode_options): Do not handle flag_strength_reduce.
      	(common_handle_option): Handle OPT_floop_optimize, OPT_frerun_loop_opt
      	and OPT_fstrength_reduce.
      	* tree-ssa-loop.c (tree_ssa_loop_prefetch): Only test
      	flag_prefetch_loop_arrays for being nonzero.
      	* common.opt (floop-optimize, frerun-loop-opt): Resurrected as
      	no-ops.
      	(fprefetch-loop-arrays-rtl): Removed.
      	(flag_prefetch_loop_arrays): Do not specify the value.
      
      	* doc/passes.texi: Update documentation of loop optimizer
      	passes.
      	* doc/invoke.texi (-fstrength-reduce, -fprefetch-loop-arrays-rtl,
      	-frerun-loop-opt): Remove.
      
      	* gcc.target/i386/20000614-2.c: Do not use -fno-strength-reduce.
      	* gcc.dg/20030324-1.c: Do not use -fstrength-reduce.
      
      From-SVN: r111469
      Zdenek Dvorak committed
  10. 14 Feb, 2006 2 commits
    • re PR tree-optimization/26209 (Specific code causes g++ 4.1.0 dominance ICE when compiled with -O3) · 43ec2467
      	PR tree-optimization/26209
      	* tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
      	* tree-cfgcleanup.c (cleanup_control_flow): Remove dead
      	eh edges.
      	* tree-cfg.c (replace_uses_by): Do not alter cfg.
      
      From-SVN: r110999
      Zdenek Dvorak committed
    • invoke.texi (-fprefetch-loop-arrays, [...]): Document. · 17684618
      	* doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
      	Document.
      	* tree-ssa-loop-niter.c (number_of_iterations_ne,
      	number_of_iterations_lt, number_of_iterations_cond): Remember the shape
      	of the ending condition.
      	* tree-ssa-loop-manip.c: Include params.h.
      	(build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
      	tree_unroll_loop): New functions.
      	* tree-pass.h (pass_loop_prefetch): Declare.
      	* loop.c (rest_of_handle_loop_optimize): Test for
      	-fprefetch-loop-arrays-rtl.
      	* tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
      	* timevar.def (TV_TREE_PREFETCH): New timevar.
      	* tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
      	pass_loop_prefetch): New.
      	* tree-cfgcleanup.c: Include tree-scalar-evolution.h.
      	(cleanup_tree_cfg_loop): Call scev_reset.
      	* common.opt (fprefetch-loop-arrays-rtl): Add.
      	* tree-ssa-loop-prefetch.c: New file.
      	* tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
      	(new_temp_expr_table): Initialize expr_vars.
      	(free_temp_expr_table): Cleanup expr_vars.
      	(check_replaceable, find_replaceable_in_bb): Prevent accumulating
      	expressions from being merged into one.
      	* tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
      	(struct tree_niter_desc): Add control, bound and cmp fields.
      	(tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
      	Declare.
      	* Makefile.in (tree-ssa-loop-prefetch.o): Add.
      	(tree-cfgcleanup.o): Add SCEV_H dependency.
      	(tree-ssa-loop-manip.o): Add PARAMS_H dependency.
      	* passes.c (init_optimization_passes): Add pass_loop_prefetch.
      
      From-SVN: r110964
      Zdenek Dvorak committed
  11. 06 Feb, 2006 1 commit
    • tree-vrp.c (execute_vrp): Do not pass dump argument to. · 10d22567
      	* tree-vrp.c (execute_vrp): Do not pass dump argument to.
      	loop_optimizer_init and loop_optimizer_finalize
      	* tree-ssa-sink.c (execute_sink_code): Ditto.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
      	* tree-ssa-loop.c (tree_loop_optimizer_init, tree_ssa_loop_init,
      	tree_ssa_loop_done): Ditto.
      	* tree-ssa-pre.c (init_pre, fini_pre): Ditto.
      	* sched-ebb.c: Include output.h.
      	(schedule_ebbs): Do not use dump argument.
      	* value-prof.h (struct profile_hooks): Remove profile_dump_file.
      	* loop.c (loop_dump_stream): Removed.
      	(loop_optimize, rest_of_handle_loop_optimize): Do not use dump
      	argument.
      	(scan_loop, move_movables, find_and_verify_loops, mark_loop_jump,
      	emit_prefetch_instructions, loop_bivs_find, loop_bivs_check,
      	final_biv_value, loop_biv_eliminable_p, loop_givs_rescan,
      	loop_iterations, strength_reduce, record_biv, record_giv,
      	final_giv_value, check_final_value, check_ext_dependent_givs,
      	combine_givs, check_dbra_loop, maybe_eliminate_biv, load_mems,
      	try_copy_prop, loop_delete_insns, try_swap_copy_prop): Use
      	dump_file instead of loop_dump_stream.
      	* ddg.c (print_ddg_edge, print_ddg, vcg_print_ddg): Do not call
      	argument dump_file.
      	* reorg.c (dbr_schedule, rest_of_handle_delay_slots): Do not use
      	dump argument.
      	* flow.c (life_analysis, rest_of_handle_life): Ditto.
      	* haifa-sched.c: Include output.h
      	(schedule_insns, sched_init): Do not use dump argument.
      	* mode-switching.c (optimize_mode_switching): Ditto.
      	* modulo-sched.c (stats_file): Removed.
      	(print_node_sched_params): Do not call argument dump_file.
      	(sms_schedule_by_order, loop_canon_p, sms_schedule,
      	rest_of_handle_sms): Do not use dump argument.  Use dump_file instead
      	of stats_file.
      	* cse.c (cse_main, rest_of_handle_cse, rest_of_handle_cse2): Do not
      	use dump argument.
      	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize,
      	rtl_loop_init, rtl_loop_done): Ditto.
      	* global.c (global_alloc, rest_of_handle_global_alloc): Ditto.
      	* predict.c (combine_predictions_for_bb, tree_estimate_probability):
      	Ditto.
      	* recog.c (peephole2_optimize, rest_of_handle_peephole2): Ditto.
      	* lcm.c (pre_edge_lcm, pre_edge_rev_lcm): Ditto.
      	* regmove.c (fixup_match_1, fixup_match_2, regmove_optimize,
      	rest_of_handle_regmove, rest_of_handle_stack_adjustments): Ditto.
      	* emit-rtl.c (renumber_insns): Ditto.
      	* cfgexpand.c (add_reg_br_prob_note, expand_gimple_cond_expr,
      	expand_gimple_basic_block, tree_expand_cfg): Ditto.
      	* regclass.c (regclass): Ditto.
      	* tree-outof-ssa.c (analyze_edges_for_bb, perform_edge_inserts,
      	remove_ssa_form, rewrite_out_of_ssa): Ditto.
      	* reg-stack.c (compensate_edge, compensate_edges, convert_regs_1,
      	convert_regs_2, convert_regs, reg_to_stack, rest_of_handle_stack_regs):
      	Ditto.
      	* sched-rgn.c (schedule_insns, rest_of_handle_sched): Ditto.
      	* local-alloc.c (rest_of_handle_local_alloc): Do not pass dump_file
      	to regclass.
      	* gcse.c (gcse_file, debug_stderr): Removed.
      	(gcse_main, bypass_jumps, rest_of_handle_jump_bypass,
      	rest_of_handle_gcse): Do not use dump argument.
      	(cprop_jump, cprop_insn, do_local_cprop, cprop, find_implicit_sets,
      	one_cprop_pass, bypass_block, compute_pre_data, insert_insn_end_bb,
      	pre_edge_insert, pre_insert_copy_insn, pre_delete, one_pre_gcse_pass,
      	compute_code_hoist_vbeinout, compute_code_hoist_data,
      	one_code_hoisting_pass, trim_ld_motion_mems, update_ld_motion_stores,
      	compute_store_table, build_store_vectors, insert_insn_start_bb,
      	insert_store, remove_reachable_equiv_notes, replace_store_insn,
      	store_motion): Use dump_file instead of gcse_file.
      	* ipa-type-escape.c (type_escape_execute): Remove debugging comments.
      	* profile.c (profile_dump_file): Removed.
      	(branch_prob): Use dump_file instead of profile_dump_file.
      	* ipa.c (cgraph_remove_unreachable_nodes): Do not call argument
      	dump_file.
      	* tree-ssa-copy.c (dump_copy_of): Ditto.
      	* rtl-factoring.c (rtl_seqabstr, rest_of_rtl_seqabstr): Do not pass
      	dump file to life_analysis.
      	* bt-load.c (branch_target_load_optimize): Ditto.
      	* cfgcleanup.c (rest_of_handle_jump2): Do not pass dump_file to
      	renumber_insns.
      	* rtl.h (cse_main, renumber_insns, schedule_insns, schedule_ebbs,
      	regclass, dbr_schedule): Declaration changed.
      	* sched-int.h (sched_init): Declaration changed.
      	* tree-profile.c (tree_profile_dump_file): Removed.
      	(tree_profile_hooks): Removed profile_dump_file hook.
      	* rtl-profile (rtl_profile_dump_file): Removed.
      	(rtl_profile_hooks): emoved profile_dump_file hook.
      	* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Declaration
      	changed.
      	* c-gimplify.c (c_genericize): Do not call local variable dump_file.
      	* tree-cfg.c (build_tree_cfg): Ditto.
      	* Makefile.in (haifa-sched.o, sched-ebb.o): Add output.h dependency.
      	* basic-block.h (life_analysis, pre_edge_lcm, pre_edge_rev_lcm):
      	Declaration changed.
      	* config/sh/sh.c (sh_output_mi_thunk): Do not pass dump_file to
      	life_analysis and schedule_insns.
      	* config/m68hc11/m68hc11.c (m68hc11_reorg): Do not pass dump_file to
      	life_analysis.
      	* config/mt/mt.c (mt_machine_reorg): Do not pass dump_file to
      	dbr_schedule.
      	* config/mips/mips.c (mips_reorg): Ditto.
      	* config/ia64/ia64.c (ia64_reorg): Do not pass dump_file to
      	schedule_ebbs.
      
      From-SVN: r110656
      Zdenek Dvorak committed
  12. 05 Feb, 2006 1 commit
    • tree-vrp.c (cfg_loops): Removed. · d78f3f78
      	* tree-vrp.c (cfg_loops): Removed.
      	(adjust_range_with_scev, vrp_visit_assignment, execute_vrp):
      	Use current_loops instead of cfg_loops.  Pass flags to
      	loop_optimizer_init.
      	* cfgloopmanip.c (fix_loop_structure): Update only available
      	information.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Pass flags to
      	loop_optimizer_init.
      	* modulo-sched.c (build_loops_structure): Removed.
      	(sms_schedule): Use loop_optimizer_init.
      	* loop-init.c (loop_optimizer_init): Use flags to determine
      	which properties of loops to prepare.
      	(rtl_loop_init): Pass flags to loop_optimizer_init.
      	* tree-ssa-sink.c (execute_sink_code): Ditto.
      	* tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
      	* tree-ssa-pre.c (init_pre): Ditto.
      	* cfgloop.h (LOOPS_NORMAL): New.
      	(loop_optimizer_init): Declaration changed.
      
      From-SVN: r110620
      Zdenek Dvorak committed
  13. 05 Jan, 2006 1 commit
    • re PR tree-optimization/22555 (array in struct disables salias subvars for other fields) · 758cf3f2
      2006-01-05  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/22555
      	* tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
      	if one structure field is an array.
      	* tree-ssa-operands.c (get_expr_operands): Continue scanning
      	operands even if we found a subvar, but ignore VOPs in this
      	case.
      	* tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
      	for renaming.
      	* tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
      
      	* gcc.dg/tree-ssa/alias-3.c: New testcase.
      
      From-SVN: r109381
      Richard Guenther committed
  14. 18 Sep, 2005 1 commit
  15. 17 Sep, 2005 1 commit
    • tree-pass.h (pass_vect_dce): Declare. · 8fe07c42
              * tree-pass.h (pass_vect_dce): Declare.
              * passes.c (init_optimization_passes): Add it.
              * tree-flow.h (tree_ssa_dce): Declare.
              * tree-ssa-dce.c (tree_ssa_dce): Export.
              * tree-ssa-loop.c (tree_vectorize): Move current_loops check ...
              (gate_tree_vectorize): ... here.
              (pass_vect_dce): New.
      
      From-SVN: r104376
      Richard Henderson committed
  16. 24 Aug, 2005 1 commit
  17. 18 Aug, 2005 1 commit
    • re PR tree-optimization/22228 (ICE with -ftree-vectorize in verify_ssa) · 90ff949f
              PR tree-optimization/22228
              * tree-ssa-loop (pass_vectorize): Add TODO_verify_loops to todo_flags_start.
              * tree-vect-transform.c (vect_transform_loop): Mark the variables that
              are recorded in vect_vnames_to_rename for renaming.
              * tree-vectorizer.c (vect_vnames_to_rename): New global bitmap.
              (slpeel_update_phi_nodes_for_guard1): Record virtual vars for renaming
              in vect_vnames_to_rename.
              (vectorize_loops): Allocate and free the vect_vnames_to_rename bitmap.
              * tree-vectorizer.h (vect_vnames_to_rename): New extern variable.
      
      From-SVN: r103252
      Dorit Nuzman committed
  18. 19 Jul, 2005 1 commit
    • loop-init.c (rest_of_handle_loop2): Remove. · 9fa26457
      	* loop-init.c (rest_of_handle_loop2): Remove.
      	(rtl_loop_init, rtl_loop_done, rtl_move_loop_invariants,
      	rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): New functions.
      	(pass_rtl_loop_init, pass_rtl_loop_done,
      	pass_rtl_move_loop_invariants, pass_rtl_unswitch,
      	pass_rtl_unroll_and_peel_loops, pass_rtl_doloop): New passes.
      	* tree-ssa-loop.c (pass_loop, pass_loop_init, pass_loop_done,
      	pass_unswitch): Rename to pass_tree_loop, pass_tree_loop_init,
      	pass_tree_loop_done, and pass_tree_unswitch.
      	(gate_loop): Rename to gate_tree_loop.
      	* passes.c (init_optimization_passes): Update for renamed tree
      	loop passes.  Add the new loop2 passes as subpasses of loop2.
      	* tree-pass.h: Add extern declarations for the new loop2 subpasses.
      	Update for the renamed tree loop passes.
      
      From-SVN: r102149
      Steven Bosscher committed
  19. 11 Jul, 2005 1 commit
    • tree-flow.h (remove_empty_loops, [...]): Declare. · b7eae7b8
      	* tree-flow.h (remove_empty_loops, single_dom_exit): Declare.
      	* passes.c (init_optimization_passes): Add pass_empty_loop.
      	* tree-pass.h (pass_empty_loop): Declare.
      	* tree-ssa-loop-ivcanon.c (empty_loop_p, remove_empty_loop,
      	try_remove_empty_loop, remove_empty_loops): New functions.
      	* tree-ssa-loop-ivopts.c (single_dom_exit): Export.
      	* tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): New.
      
      	* gcc.dg/tree-ssa/loop-10.c: New test.
      
      From-SVN: r101901
      Zdenek Dvorak committed
  20. 25 Jun, 2005 1 commit
  21. 17 May, 2005 1 commit
    • timevar.def (TV_SCEV_CONST): New timevar. · 684aaf29
      	* timevar.def (TV_SCEV_CONST): New timevar.
      	* tree-optimize.c (init_tree_optimization_passes): Add
      	pass_scev_cprop.
      	* tree-pass.h (pass_scev_cprop): Declare.
      	* tree-scalar-evolution.c (scev_const_prop): New function.
      	* tree-scalar-evolution.h (scev_const_prop): Declare.
      	* tree-ssa-loop.c (gate_scev_const_prop, pass_scev_cprop):
      	New.
      	* tree-cfg.c (replace_uses_by): Export.
      	* tree-flow.h (replace_uses_by): Declare.
      
      From-SVN: r99860
      Zdenek Dvorak committed
  22. 06 May, 2005 1 commit
    • re PR tree-optimization/19401 (Trivial loop not unrolled) · 91a01f21
      	PR tree-optimization/19401
      	* tree-flow.h (tree_unroll_loops_completely): Declaration changed.
      	* tree-ssa-loop-ivcanon.c (enum unroll_level): New.
      	(estimated_unrolled_size): New function.
      	(try_unroll_loop_completely, canonicalize_loop_induction_variables,
      	tree_unroll_loops_completely): Always unroll loops if the code size
      	does not increase.
      	* tree-ssa-loop.c (tree_complete_unroll): Indicate whether all
      	loops should be unrolled completely.
      	(gate_tree_complete_unroll): Run complete unrolling unconditionally.
      
      From-SVN: r99334
      Zdenek Dvorak committed
  23. 23 Apr, 2005 1 commit
    • [multiple changes] · 84d65814
      2005-04-22  Diego Novillo  <dnovillo@redhat.com>
      
      	* Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
      	* lambda-code.c (perfect_nestify): Mark virtual operands in
      	the moved statement for renaming.
      	* params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
      	(PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
      	* params.h (MIN_VIRTUAL_MAPPINGS): Define.
      	(VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
      	* tree-flow.h (struct var_ann_d): Update comments.
      	(rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
      	allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
      	debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
      	debug_tree_ssa_stats, rewrite_ssa_into_ssa,
      	dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
      	debug_names_replaced_by): Remove declarations.
      	(delete_update_ssa, get_current_def, set_current_def): Declare.
      	(rewrite_into_loop_closed_ssa): Add new argument.  Update
      	all callers.
      	* tree-into-ssa.c: Include params.h.
      	(old_virtual_ssa_names): Remove.  Update all users.
      	(need_to_replace_names_p): Remove.  Update all users.
      	(struct update_ssa_stats_d): Declare.
      	(update_ssa_stats): New local.
      	(dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
      	dump_tree_ssa_stats, debug_tree_ssa_stats,
      	dump_update_ssa, debug_update_ssa,
      	dump_names_replaced_by, debug_names_replaced_by): Declare.
      	(get_current_def, set current_def): Make extern.
      	(is_old_name, is_new_name): Protect against references
      	past the end of the sets.
      	(add_new_name_mapping): Assert that OLD and NEW are
      	different SSA names for the same symbol.
      	When adding a virtual mapping, update stats for virtual
      	mapping heuristic.
      	(insert_phi_nodes_for): If UPDATE_P is true, create the
      	LHS of the new PHI by duplicating SSA name VAR.
      	(insert_phi_nodes_1): Remove.  Update all users.
      	(insert_phi_nodes): Remove second argument.  Update all
      	users.
      	(maybe_replace_use, maybe_replace_def): New.
      	(rewrite_update_stmt): Call them.
      	(mark_def_interesting): Remove calls to is_gimple_reg.
      	(prepare_phi_args_for_update): Remove.  Update all users.
      	(prepare_block_for_update): Only process virtual operands
      	and GIMPLE registers in normal form.
      	(prepare_use_sites_for): New.
      	(prepare_names_to_update): Rename from prepare_def_sites.
      	Call prepare_use_sites_for.
      	(dump_update_ssa): Rename from dump_repl_tbl.
      	Update all users.
      	Show statistics for virtual mapping heuristic.
      	(debug_update_ssa): Rename from debug_debug_repl_tbl.
      	(init_update_ssa): Initialize UPDATE_SSA_STATS.
      	(delete_update_ssa): Make extern.
      	(mark_set_for_renaming): If the set is empty, do nothing.
      	(release_ssa_name_after_update_ssa): Update comment.
      	(insert_updated_phi_nodes_for): Do not remove existing
      	PHI nodes for symbols.
      	(switch_virtuals_to_full_rewrite_p): New.
      	(switch_virtuals_to_full_rewrite): New.
      	(update_ssa): Call them.
      	Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
      	for every statement before updating.
      	If all the names in NEW_SSA_NAMES have been marked for
      	removal, do nothing.
      	Only start at the top of the CFG if there are symbols in
      	SYMS_TO_RENAME.
      	(ssa_rewrite_finalize_block): Remove.
      	(ssa_register_new_def): Remove.
      	(ssa_rewrite_stmt): Remove.
      	(ssa_rewrite_phi_arguments): Remove.
      	(ssa_rewrite_initialize_block): Remove.
      	(ssa_mark_def_sites): Remove.
      	(ssa_mark_def_sites_initialize_block): Remove.
      	(ssa_mark_phi_uses): Remove.
      	(rewrite_ssa_into_ssa): Remove.
      	* tree-phinodes.c (find_phi_node_for): Remove.
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
      	Call update_ssa.
      	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
      	Remove calls to verify_dominators and
      	verify_loop_structure.
      	(tree_unswitch_single_loop): Call update_ssa.
      	* tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
      	returns false.
      	Call verify_stmts.
      	(delete_tree_ssa): Assert that need_ssa_update_p returns
      	false.
      	* tree-vect-transform.c (vect_transform_loop): Call update_ssa.
      	* tree-vectorizer.c (allocate_new_names, rename_def_op,
      	free_new_names): Remove.  Update all users.
      	(rename_use_op): Call get_current_def.
      	(rename_variables_in_bb): Do not handle any real or
      	virtual definition.
      	(slpeel_update_phis_for_duplicate_loop): Call
      	get_current_def and set_current_def instead of using
      	SSA_NAME_AUX.
      	(slpeel_update_phi_nodes_for_guard2): Reformat comments.
      	(slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
      	ssa_names_to_replace and delete_update_ssa.
      	* doc/invoke.texi: Document --param min-virtual-mappings
      	and --param virtual-mappings-ratio.
      
      2005-04-22  Zdenek Dvorak  <dvorakz@suse.cz>
      	    Diego Novillo  <dnovillo@redhat.com>
      
      	* tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
      	for newly created PHI nodes.
      	Call create_new_def_for for every new V_MAY_DEF and
      	V_MUST_DEF on the copied statement.
      	(struct ssa_name_map_entry): Remove.
      	(ssa_name_map_entry_hash): Remove.
      	(ssa_name_map_entry_eq): Remove.
      	(allocate_ssa_names): Remove.
      	(rewrite_to_new_ssa_names_def): Remove.
      	(rewrite_to_new_ssa_names_use): Remove.
      	(rewrite_to_new_ssa_names_bb): Remove.
      	(rewrite_to_new_ssa_names): Remove.
      	(tree_duplicate_sese_region): Remove variables ver,
      	definitions, phi, ssa_name_map and bi.
      	Call need_ssa_update_p instead of any_marked_for_rewrite_p.
      	Call update_ssa.
      	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
      	update_ssa instead of rewrite_ssa_into_ssa.
      	* tree-ssa-loop-manip.c (add_exit_phis_edge): Call
      	create_new_def_for.
      	(find_uses_to_rename_use): Add argument 'need_phis'.
      	(find_uses_to_rename_stmt): Do not scan virtual operands.
      	(find_uses_to_rename): Only scan PHI nodes for
      	non-virtual names.
      	(rewrite_into_loop_closed_ssa): Call update_ssa.
      	(check_loop_closed_ssa_use): Ignore virtual operands.
      	(check_loop_closed_ssa_stmt): Likewise.
      	(verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
      	NULL.
      	(rename_variables, set_phi_def_stmts): Remove.
      	(tree_duplicate_loop_to_header_edge): Reformat comment.
      	Remove variables BB, I and DEFINITIONS.
      	Call need_ssa_update_p.
      	Call update_ssa.
      	(lv_adjust_loop_header_phi): Reformat comment.
      	* tree-ssanames.c (ssa_names_to_rewrite): Remove.
      	(marked_for_rewrite_p, any_marked_for_rewrite_p,
      	mark_for_rewrite, unmark_all_for_rewrite,
      	marked_ssa_names): Remove.  Update all users.
      	(release_ssa_name): If VAR has been registered for SSA
      	updating, do nothing.
      	* tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
      	(build_assert_expr_for): Call register_new_name_mapping.
      	(insert_range_assertions): Update call to update_ssa.
      	* tree.h (mark_for_rewrite, unmark_all_for_rewrite,
      	marked_for_rewrite_p, any_marked_for_rewrite_p,
      	marked_ssa_names): Remove.
      
      From-SVN: r98599
      Diego Novillo committed
  24. 09 Apr, 2005 1 commit
    • backport: copy-prop, incremental SSA updating of FUD chains and newly exposed symbols. · 0bca51f0
      	Merge from tree-cleanup-branch: VRP, store CCP, store
      	    copy-prop, incremental SSA updating of FUD chains and
      	    newly exposed symbols.
      
      	* Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
      	(OBJS-common): Add tree-vrp.o.
      	(tree-vrp.o): New rule.
      	* basic-block.h (nearest_common_dominator_for_set): Declare.
      	* common.opt (ftree-store-ccp): New flag.
      	(ftree-copy-prop): New flag.
      	(ftree-vrp): New flag.
      	(ftree-store-copy-prop): New flag.
      	* dominance.c (nearest_common_dominator_for_set): New.
      	* domwalk.c (walk_dominator_tree): Only traverse
      	statements in blocks marked in walk_data->interesting_blocks.
      	* domwalk.h (struct dom_walk_data): Add field interesting_blocks.
      	* fold-const.c (fold): Handle ASSERT_EXPR.
      	* opts.c (decode_options): Set flag_tree_copy_prop at -O1.
      	Set flag_tree_store_ccp, flag_tree_store_copy_prop and
      	flag_tree_vrp at -O2.
      	* timevar.def (TV_TREE_VRP): Define.
      	(TV_TREE_COPY_PROP): Define.
      	(TV_TREE_STORE_COPY_PROP): Define.
      	(TV_TREE_SSA_INCREMENTAL): Define.
      	(TV_TREE_STORE_CCP): Define.
      	* tree-cfg.c (tree_can_merge_blocks_p): Remove reference
      	to kill_redundant_phi_nodes from comment.
      	(verify_expr): Handle ASSERT_EXPR.
      	* tree-dfa.c (mark_new_vars_to_rename): Remove second
      	argument.  Update all users.
      	(mark_call_clobbered_vars_to_rename): Remove.  Update all
      	users.
      	* tree-flow-inline.h (unmodifiable_var_p): New.
      	* tree-flow.h (enum value_range_type): Declare.
      	(struct value_range_def): Declare.
      	(value_range): Declare.
      	(remove_all_phi_nodes_for): Remove.  Update all users.
      	(find_phi_node_for): Declare.
      	(add_type_alias): Declare.
      	(count_uses_and_derefs): Declare.
      	(kill_redundant_phi_nodes): Remove.
      	(rewrite_into_ssa): Remove.
      	(rewrite_def_def_chains): Remove.
      	(update_ssa, register_new_name_mapping, create_new_def_for,
      	need_ssa_update_p, name_registered_for_update_p,
      	release_ssa_name_after_update_ssa, dump_repl_tbl,
      	debug_repl_tbl, dump_names_replaced_by,
      	debug_names_replaced_by, mark_sym_for_renaming,
      	mark_set_for_renaming, get_current_def, set_current_def,
      	get_value_range, dump_value_range, debug_value_range,
      	dump_all_value_ranges, debug_all_value_ranges,
      	expr_computes_nonzero, loop_depth_of_name,
      	unmodifiable_var_p): Declare.
      	* tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
      	ASSERT_EXPR.
      	* tree-into-ssa.c (block_defs_stack): Update comment.
      	(old_ssa_names, new_ssa_names, old_virtual_ssa_names,
      	syms_to_rename, names_to_release, repl_tbl,
      	need_to_initialize_update_ssa_p, need_to_update_vops_p,
      	need_to_replace_names_p): New locals.
      	(NAME_SETS_GROWTH_FACTOR): Define.
      	(struct repl_map_d): Declare.
      	(struct mark_def_sites_global_data): Add field
      	interesting_blocks.
      	(enum rewrite_mode): Declare.
      	(REGISTER_DEFS_IN_THIS_STMT): Define.
      	(compute_global_livein): Use last_basic_block instead of
      	n_basic_blocks.
      	(set_def_block): Remove last argument.  Update all callers.
      	(prepare_use_operand_for_rename): Remove.  Update all callers.
      	(prepare_def_operand_for_rename): Remove.  Update all callers.
      	(symbol_marked_for_renaming): New.
      	(is_old_name): New.
      	(is_new_name): New.
      	(repl_map_hash): New.
      	(repl_map_eq): New.
      	(repl_map_free): New.
      	(names_replaced_by): New.
      	(add_to_repl_tbl): New.
      	(add_new_name_mapping): New.
      	(mark_def_sites): Assume that all the operands in the
      	statement are in normal form.
      	(find_idf): Assert that the block in the stack is valid.
      	(get_default_def_for): New.
      	(insert_phi_nodes_for): Add new argument 'update_p'.
      	Add documentation.
      	If update_p is true, add a new mapping between the LHS of
      	each new PHI and the name that it replaces.
      	(insert_phi_nodes_1): Only call find_idf if needed.
      	(get_reaching_def): Call get_default_def_for.
      	(rewrite_operand): Remove.
      	(rewrite_stmt): Do nothing if REGISTER_DEFS_IN_THIS_STMT
      	and REWRITE_THIS_STMT are false.
      	Assume that all the operands in the statement are in
      	normal form.
      	(rewrite_add_phi_arguments): Don't use PHI_REWRITTEN.
      	(rewrite_virtual_phi_arguments): Remove.
      	(invalidate_name_tags): Remove.
      	(register_new_update_single, register_new_update_set,
      	rewrite_update_init_block, replace_use,
      	rewrite_update_fini_block, rewrite_update_stmt,
      	rewrite_update_phi_arguments): New.
      	rewrite_blocks): Remove argument 'fix_virtual_phis'.
      	Add arguments 'entry', 'what' and 'blocks'.
      	Initialize the dominator walker according to 'what' and
      	'blocks'.
      	Start the dominator walk at 'entry'.
      	(mark_def_site_blocks): Add argument 'interesting_blocks'.
      	Use it to configure the dominator walker.
      	(rewrite_into_ssa): Remove argument 'all'.
      	Make internal.
      	(rewrite_all_into_ssa): Remove.
      	(rewrite_def_def_chains): Remove.
      	(mark_def_interesting, mark_use_interesting,
      	prepare_phi_args_for_update, prepare_block_for_update,
      	prepare_def_site_for, prepare_def_sites,
      	dump_names_replaced_by, debug_names_replaced_by,
      	dump_repl_tbl, debug_repl_tbl, init_update_ssa,
      	delete_update_ssa, create_new_def_for,
      	register_new_name_mapping, mark_sym_for_renaming,
      	mark_set_for_renaming, need_ssa_update_p,
      	name_registered_for_update_p, ssa_names_to_replace,
      	release_ssa_name_after_update_ssa,
      	insert_updated_phi_nodes_for, update_ssa): New.
      	* tree-loop-linear.c (linear_transform_loops): Call
      	update_ssa instead of rewrite_into_ssa.
      	* tree-optimize.c (vars_to_rename): Remove.
      	Update all users.
      	(init_tree_optimization_passes): Replace
      	pass_redundant_phi with pass_copy_prop.
      	Add pass_vrp.
      	Replace pass_ccp with pass_store_ccp.
      	Add pass_store_copy_prop after pass_store_ccp.
      	(execute_todo): If the TODO_ flags don't include updating
      	the SSA form, assert that it does not need to be updated.
      	Call update_ssa instead of rewrite_into_ssa and
      	rewrite_def_def_chains.
      	If TODO_verify_loops is set, call verify_loop_closed_ssa.
      	(tree_rest_of_compilation):
      	* tree-pass.h (TODO_dump_func, TODO_ggc_collect,
      	TODO_verify_ssa, TODO_verify_flow, TODO_verify_stmts,
      	TODO_cleanup_cfg): Renumber.
      	(TODO_verify_loops, TODO_update_ssa,
      	TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
      	TODO_update_ssa_only_virtuals): Define.
      	(pass_copy_prop, pass_store_ccp, pass_store_copy_prop, pass_vrp):
      	Declare.
      	* tree-phinodes.c (make_phi_node): Update documentation.
      	(remove_all_phi_nodes_for): Remove.
      	(find_phi_node_for): New.
      	* tree-pretty-print.c (dump_generic_node): Handle ASSERT_EXPR.
      	* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Likewise.
      	(interpret_rhs_modify_expr): Likewise.
      	* tree-sra.c (decide_instantiations): Mark all symbols in
      	SRA_CANDIDATES for renaming.
      	(mark_all_v_defs_1): Rename from mark_all_v_defs.
      	(mark_all_v_defs): New function.  Update all users to call it
      	with the whole list of scalarized statements, not just the
      	first one.
      	* tree-ssa-alias.c (count_ptr_derefs): Make extern.
      	(compute_flow_insensitive_aliasing): If the tag is
      	unmodifiable and the variable isn't or vice-versa, don't
      	make them alias of each other.
      	(setup_pointers_and_addressables): If the type tag for
      	VAR is about to change, mark the old one for renaming.
      	(add_type_alias): New.
      	* tree-ssa-ccp.c: Document SSA-CCP and STORE-CCP.
      	(ccp_lattice_t): Rename from latticevalue.
      	(value): Remove.  Update all users.
      	(const_val): New local variable.
      	(do_store_ccp): New local variable.
      	(dump_lattice_value): Handle UNINITIALIZED.
      	(debug_lattice_value): New.
      	(get_default_value): Re-write.
      	(set_lattice_value): Re-write.
      	(def_to_varying): Remove.  Update all users.
      	(likely_value): Return VARYING for statements that make
      	stores when STORE_CCP is false.
      	Return VARYING for any statement other than MODIFY_EXPR,
      	COND_EXPR and SWITCH_EXPR.
      	(ccp_initialize): Re-write.
      	(replace_uses_in, replace_vuse_in, substitute_and_fold):
      	Move to tree-ssa-propagate.c.
      	(ccp_lattice_meet): Handle memory stores when
      	DO_STORE_CCP is true.
      	(ccp_visit_phi_node): Likewise.
      	(ccp_fold): Likewise.
      	(evaluate_stmt): Likewise.
      	(visit_assignment): Likewise.
      	(ccp_visit_stmt): Likewise.
      	(execute_ssa_ccp): Add argument 'store_ccp'.  Copy it
      	into DO_STORE_CCP.
      	(do_ssa_ccp): New.
      	(pass_ccp): Use it.
      	(do_ssa_store_ccp): New.
      	(gate_store_ccp): New.
      	(pass_store_ccp): Declare.
      	* tree-ssa-copy.c: Include tree-ssa-propagate.h.
      	(may_propagate_copy): Reformat.
      	Don't abort if ORIG is a virtual and DEST isn't.
      	If NEW does not have alias information but DEST does,
      	copy it.
      	(copy_of, cached_last_copy_of, do_store_copy_prop, enum
      	copy_prop_kind, which_copy_prop): Declare.
      	(stmt_may_generate_copy, get_copy_of_val,
      	get_last_copy_of, set_copy_of_val, dump_copy_of,
      	copy_prop_visit_assignment, copy_prop_visit_cond_stmt,
      	copy_prop_visit_stmt, copy_prop_visit_phi_node,
      	init_copy_prop, fini_copy_prop, execute_copy_prop,
      	gate_copy_prop, do_copy_prop, gate_store_copy_prop,
      	store_copy_prop): New.
      	(pass_copy_prop, pass_store_copy_prop): Declare.
      	* tree-ssa-dom.c (struct opt_stats_d): Add fields
      	'num_const_prop' and 'num_copy_prop'.
      	(cprop_operand): Update them.
      	(dump_dominator_optimization_stats): Dump them.
      	(tree_ssa_dominator_optimize): Call update_ssa instead of
      	rewrite_into_ssa.
      	(loop_depth_of_name): Declare extern.
      	(simplify_cond_and_lookup_avail_expr): Guard against NULL
      	values for LOW or HIGH.
      	(cprop_into_successor_phis): Only propagate if NEW != ORIG.
      	(record_equivalences_from_stmt): Call expr_computes_nonzero.
      	(cprop_operand): Only propagate if VAL != OP.
      	* tree-ssa-dse.c (dse_optimize_stmt): Mark symbols in removed
      	statement for renaming.
      	* tree-ssa-loop-im.c (move_computations): Call update_ssa.
      	* tree-ssa-loop-ivopts.c (rewrite_address_base): Call
      	add_type_alias if necessary.
      	Call mark_new_vars_to_rename.
      	(tree_ssa_iv_optimize): If new symbols need to be renamed,
      	mark every statement updated, call update_ssa and
      	rewrite_into_loop_closed_ssa.
      	* tree-ssa-loop-manip.c (add_exit_phis): Do not remove DEF_BB
      	from LIVEIN if VAR is a virtual.
      	* tree-ssa-loop.c (tree_loop_optimizer_init): Call update_ssa.
      	* tree-ssa-operands.c (get_expr_operands): Handle ASSERT_EXPR.
      	(get_call_expr_operands): Reformat statement.
      	(add_stmt_operand): Don't create V_MAY_DEFs for read-only
      	symbols.
      	* tree-ssa-propagate.c (ssa_prop_init): Initialize
      	SSA_NAME_VALUE for every name.
      	(first_vdef, stmt_makes_single_load, stmt_makes_single_store,
      	get_value_loaded_by): New.
      	(replace_uses_in, replace_vuses_in, replace_phi_args_in,
      	substitute_and_fold): Move from tree-ssa-ccp.c.
      	* tree-ssa-propagate.h (struct prop_value_d, prop_value_t,
      	first_vdef, stmt_makes_single_load, stmt_makes_single_store,
      	get_value_loaded_by, replace_uses_in, substitute_and_fold):
      	Declare.
      	* tree-ssa.c (verify_use): Fix error message.
      	(propagate_into_addr, replace_immediate_uses, get_eq_name,
      	check_phi_redundancy, kill_redundant_phi_nodes,
      	pass_redundant_phi): Remove.  Update all users.
      	* tree-vect-transform.c (vect_create_data_ref_ptr): Call
      	add_type_alias, if necessary.
      	* tree-vectorizer.h (struct _stmt_vect_info): Update
      	documentation for field 'memtag'.
      	* tree-vrp.c: New file.
      	* tree.def (ASSERT_EXPR): Define.
      	* tree.h (ASSERT_EXPR_VAR): Define.
      	(ASSERT_EXPR_COND): Define.
      	(SSA_NAME_VALUE_RANGE): Define.
      	(struct tree_ssa_name): Add field 'value_range'.
      	(PHI_REWRITTEN): Remove.
      	(struct tree_phi_node): Remove field 'rewritten'.
      	* doc/invoke.texi (-fdump-tree-storeccp, -ftree-copy-prop,
      	-ftree-store-copy-prop): Document.
      	* doc/tree-ssa.texi: Remove broken link to McCAT's compiler.
      	Document usage of update_ssa.
      
      testsuite/ChangeLog
      
      	* g++.dg/tree-ssa/pr18178.C: New test.
      	* gcc.c-torture/execute/20030216-1.x: Ignore at -O1.
      	* gcc.c-torture/execute/20041019-1.c: New test.
      	* gcc.dg/tree-ssa/20041008-1.c: New test.
      	* gcc.dg/tree-ssa/ssa-ccp-12.c: New test.
      	* gcc.dg/tree-ssa/20030731-2.c: Update to use -fdump-tree-store_ccp.
      	* gcc.dg/tree-ssa/20030917-1.c: Likewise.
      	* gcc.dg/tree-ssa/20030917-3.c: Likewise.
      	* gcc.dg/tree-ssa/20040721-1.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-1.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-2.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-7.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ccp-9.c: Likewise.
      
      From-SVN: r97884
      Diego Novillo committed
  25. 21 Mar, 2005 1 commit
  26. 12 Mar, 2005 1 commit
    • cfglayout.c, [...]: Update copyright. · c6c81aa6
      	* cfglayout.c, loop-doloop.c, profile.c, target-def.h,
      	target.h, targhooks.c, tracer.c, tree-ssa-loop-ch.c,
      	tree-ssa-loop-unswitch.c, tree-ssa-loop.c, vec.c, vmsdbgout.c,
      	config/m32r/m32r.md, config/xtensa/xtensa.h: Update copyright.
      
      From-SVN: r96320
      Kazu Hirata committed
  27. 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
  28. 26 Nov, 2004 1 commit
  29. 17 Nov, 2004 1 commit
    • re PR tree-optimization/18519 (ICE: Segmentation fault with optimization) · 88a40e67
      2004-11-16  Daniel Berlin  <dberlin@dberlin.org>
      
      	Fix PR tree-optimization/18519
      
      	* tree-optimize (execute_todo): Add case for TODO_cleanup_cfg.
      	* tree-pass.h: Add TODO_cleanup_cfg.
      	* tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg.
      	(ccp_finalize): Remove call to cleanup_cfg.
      	* tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func.
      	(pass_cd_dce): Ditto.
      	(perform_tree_ssa_dce): Remove call to cleanup_cfg,
      	dump_function_to_file.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Remove call
      	to cleanup_cfg.
      	(pass_ch): Add TODO_cleanup_cfg.
      	* tree-ssa-loop.c (tree_ssa_loop_done): Remove call to
      	cleanup_cfg.
      	(pass_loop_done): Add TODO_cleanup_cfg.
      	* tree-ssa-phiopt.c (pass_phiopt): Ditto.
      	(tree_ssa_phiopt): Remove call to cleanup_cfg.
      
      From-SVN: r90783
      Daniel Berlin committed
  30. 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
  31. 28 Sep, 2004 1 commit
  32. 25 Sep, 2004 1 commit
  33. 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
  34. 08 Sep, 2004 1 commit
    • Makefile.in (tree-loop-linear.o): Added. · 599eabdb
      2004-09-08  Daniel Berlin  <dberlin@dberlin.org>
      
      	* Makefile.in (tree-loop-linear.o): Added.
      	(OBJS-common): Add tree-loop-linear.o
      	* common.opt: New flag, ftree-loop-linear.
      	* timevar.def: New timevar, TV_TREE_LOOP_LINEAR.
      	* tree-flow.h: Add prototype for linear_transform_loops.
      	* tree-optimize.c: Add linear transform after vectorization.
      	* tree-pass.h: Add struct pass_linear_transform.
      	* tree-ssa-loop.c: Add pass_linear_transform.
      	* tree-loop-linear.c: New file.
      	* lambda-code.c: gcc_assertify.
      	(gcc_loop_to_lambda_loop): Handle all exit tests.
      	Handle case where we have (invariant >= induction var).
      	(find_induction_var_from_exit_cond): Ditto.
      
      From-SVN: r87190
      Daniel Berlin committed
  35. 06 Sep, 2004 1 commit
    • Unify the management of RTL and tree-level dump files. · 9f8628ba
      2004-09-06  Paolo Bonzini  <bonzini@gnu.org>
      
      	Unify the management of RTL and tree-level dump files.
      
      	* cfgexpand.c (tree_expand_cfg): Fix incorrect comment.
      	Don't print function name to the dump file, the pass manager
      	would do this for us. Add code from the top of
      	rest_of_compilation, up to the initial RTL dump.
      	* passes.c (rest_of_handle_jump): Call fixup_tail_calls and
      	close the DFI_sibling dump file.
      	(rest_of_compilation): Don't do that here.  Remove code up to the
      	initial RTL dump.
      	(init_optimization_passes): Remove.
      	(pass_rest_of_compilation): Change pass name to NULL.
      	* toplev.c (lang_dependent_init): Do not use an empty dump file prefix.
      	Do not call init_optimization_passes.
      	* toplev.h (init_optimization_passes): Remove.
      
      	* graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
      	finish_graph_dump_file): Remove SUFFIX parameter.
      	* graph.h (print_rtl_graph_with_bb, clean_graph_dump_file,
      	finish_graph_dump_file): Likewise.
      
      	* tree-pass.h (struct tree_opt_pass): Add `letter' field.
      	* cfgexpand.c (pass_expand): Adjust.
      	* gimple-low.c (pass_lower_cf, pass_remove_useless_vars): Adjust.
      	* passes.c (pass_rest_of_compilation): Adjust.
      	* predict.c (pass_profile): Adjust.
      	* tree-alias-common.c (pass_build_pta, pass_del_pta): Adjust.
      	* tree-cfg.c (pass_build_cfg, pass_remove_useless_stmts,
      	pass_split_crit_edges, pass_warn_function_return): Adjust.
      	* tree-complex.c (pass_lower_vector_ssa, pass_pre_expand): Adjust.
      	* tree-dfa.c (pass_referenced_vars): Adjust.
      	* tree-eh.c (pass_lower_eh): Adjust.
      	* tree-if-conv.c (pass_build_ssa): Adjust.
      	* tree-into-ssa.c (pass_build_ssa): Adjust.
      	* tree-mudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
      	* tree-nomudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
      	* tree-nrv.c (pass_nrv): Adjust.
      	* tree-optimize.c (pass_gimple, pass_all_optimizations,
      	pass_cleanup_cfg_post_optimizing, pass_free_datastructures,
      	pass_init_datastructures): Adjust.
      	* tree-outof-ssa.c (pass_del_ssa): Adjust.
      	* tree-profile.c (pass_tree_profile): Adjust.
      	* tree-sra.c (pass_sra): Adjust.
      	* tree-ssa-alias.c (pass_may_alias): Adjust.
      	* tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Adjust.
      	* tree-ssa-copyrename.c (pass_rename_ssa_copies): Adjust.
      	* tree-ssa-dce.c (pass_dce, pass_cd_dce): Adjust.
      	* tree-ssa-dom.c (pass_dominator): Adjust.
      	* tree-ssa-dse.c (pass_dse): Adjust.
      	* tree-ssa-forwprop.c (pass_forwprop): Adjust.
      	* tree-ssa-if-conv.c (pass_if_conversion): Adjust.
      	* tree-ssa-loop-ch.c (pass_ch): Adjust.
      	* tree-ssa-loop.c (pass_loop, pass_loop_init, pass_lim,
      	pass_loop_done, pass_complete_unroll, pass_iv_canon,
      	pass_iv_optimize, pass_vectorize): Adjust.
      	* tree-ssa-phiopt.c (pass_phiopt): Adjust.
      	* tree-ssa-pre.c (pass_pre, pass_fre): Adjust.
      	* tree-ssa.c (pass_redundant_phi, pass_early_warn_uninitialized,
      	pass_late_warn_uninnitialized): Adjust.
      	* tree-tailcall.c (pass_tail_recursion, pass_tail_calls): Adjust.
      
      	* Makefile.in (tree-dump.o): Add new dependencies.
      	* cgraph.c (cgraph_remove_node): TDF_all -> TDF_tree_all.
      	* cgraphunit.c (cgraph_preserve_function_body_p, cgraph_optimize):
      	Likewise.
      	* toplev.c (dump_file_name): New.
      	* tree-dump.c (dump_enable_all): Add LETTER parameter.
      	(struct dump_file_info): Add NUM and LETTER fields.
      	(dump_files): Adjust and add RTL dump files.
      	(dump_register): Add NUM and LETTER fields.
      	(get_dump_file_name, dump_initialized_p, enable_rtl_dump_file): New.
      	(dump_begin): Use get_dump_file_name.
      	(dump_switch_p_1): Adjust call to dump_enable_all.
      	* tree-dump.h (dump_register): Adjust prototype.
      	* tree-optimize.c (register_one_dump_file): Take dump file index.
      	Support flags for RTL dumps.
      	(register_dump_files): Fill in NUM field of struct dump_file_info.
      	Track properties both when the gate is executed and when it is not.
      	(execute_todo): Dump RTL.  Add PROPERTIES parameter.
      	(execute_one_pass): Pass properties to execute_todo.  Handle VCG
      	dumps of RTL.
      	* tree-pass.h (dump_file_name): New.
      	* tree.h (TDF_TREE, TDF_RTL, get_dump_file_name, dump_initialized_p):
      	New.
      
      	* Makefile.in (passes.o): Add new dependencies.
      	* passes.c (struct dump_file_info, enum dump_file_index,
      	dump_file_tbl, init_optimization_passes): Remove.
      	(open_dump_file, close_dump_file): Use tree-dumping infrastructure.
      	(rest_of_handle_new_regalloc, rest_of_handle_old_regalloc): Use
      	dump_enabled_p.
      	(finish_optimization_passes): Update finish_graph_dump_file loop.
      	(enable_rtl_dump_file): Remove.
      	* tree-dump.c (dump_files): Adjust and add RTL dump files.
      	(enable_rtl_dump_file): Add here.
      	* tree.h (enum tree_dump_index): Add RTL dump file indices.
      	* doc/invoke.texi (Debugging options): Document new RTL debugging
      	options.  Update.
      
      From-SVN: r87113
      Paolo Bonzini committed
  36. 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
  37. 03 Sep, 2004 1 commit
  38. 29 Aug, 2004 1 commit
  39. 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