summaryrefslogtreecommitdiff
path: root/gcc/flow.c
Commit message (Collapse)AuthorAgeFilesLines
* * basic-block.h (CLEANUP_PRE_LOOP): New.hubicka2001-07-291-3/+28
| | | | | | | | | | | | | | | * except.c (finish_eh_generation): Update call of cleanup_cfg. * sibcall.c (optimize_sibling_calls): Likewise. * toplev.c (rest_of_compilation): Likewise. * flow.c (try_forward_edges): Take argument MODE; do not forward over loop pre-headers if CLEANUP_PRE_LOOP. (try_optimize_cfg): Update call of try_forward_edges. * (validate_replace_rtx_1): Fix simplification of MINUS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44458 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (life_analysis): Elide PROP_ALLOW_CFG_CHANGES ifrth2001-07-291-1/+1
| | | | | | | not optimizing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44451 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (add_to_mem_set_list): New function.rth2001-07-291-70/+66
| | | | | | | | | | | | (init_propagate_block_info): Use it. (mark_set_1): Likewise. (insn_dead_p): Canonicalize memory address for dead store comparison. Allow wider mode stores to kill narrower mode stores. (invalidate_mems_from_autoinc): Use invalidate_mems_from_set. (invalidate_mems_from_set): Don't handle MEMs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44441 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (EDGE_FREQUENCY): New macro.hubicka2001-07-281-10/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bb-reorder (fixup_reorder_chain): Set counts and frequencies for new BB/edges. * flow.c (find_sub_basic_blocks): Likewise. (try_crossjump_to_edge): Likewise; use EDGE_FREQUENCY (redirect_edge_and_branch): Use EDGE_FREQUENCY. * predict.c (DEF_PREDICTOR): New argument FLAGS. (HITRATE): New macro. (PRED_FLAG_FIRST_MATCH): New constant. (predictor_info): New field flgags. (combine_predictions_for_insn): Use DS theory to combine probabilities; set the edge probabilities when finished. (estimate_probability): Avoid duplicated matches of LOOP_BRANCH heuristics for nested loops; update comment. * predict.def: Add flags for each prediction, set probabilities according to B&L paper. * predict.h (DEF_PREDICTOR): New argument FLAGS. * profile.c (compute_branch_probabilities): Cleanup way the edge probabilities are computed and REG_BR_PROB notes are dropped; if values does not match, emit error. (init_branch_prob): Do error instead of warning when profile driven feedback is missing or corrupt. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44439 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (last_loop_beg_note): New function.hubicka2001-07-271-24/+58
| | | | | | | | | | | | | | | (redirect_edge_and_branch): Use it. (split_edge): Likewise. * alias.c (loop_p): Avoid uninitialized memory access. * flow.c (try_forward_edges): Avoid accessing freed memory. * flow.c (backward_edge_of_syntactic_loop_p): Avoid uninitialized variable access. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44429 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (redirect_edge_and_branch_force): Testwehle2001-07-271-1/+1
| | | | | | | target->global_live_at_start. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44412 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.h (cleanup_barriers): Declare.hubicka2001-07-261-1/+27
| | | | | | | | | | | | * jump.c (cleanup_barriers): New function. * toplev.c (rest_of_compilation): Call cleanup_barriers before loop optimizer and after bb_reorder. * flow.c (back_edge_of_syntactic_loop_p): New. (split_edge): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44409 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (PROP_ALLOW_CFG_CHANGES): Define.wehle2001-07-261-4/+45
| | | | | | | | | | | | | (PROP_FINAL): Include PROP_ALLOW_CFG_CHANGES. (propagate_block): Update prototype. * flow.c (update_life_info): Simplify the CFG and recalculate the global regs which are alive when removing dead code during a global update. (propagate_block): Return non-zero if an INSN is deleted. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44403 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (delete_dead_jumptables): New function.hubicka2001-07-251-9/+68
| | | | | | | | (life_analyzis): Call it. * bb-reorder.c (skip_insns_after_block): Handle contradictive sequences. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44365 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (find_sub_basic_blocks): Fix handling of the last BB inrth2001-07-251-14/+19
| | | | | | | | | the sequence. (make_edges): New argument update_p; populate the edge cache if set. (find_basic_blocks): Update make_edges invocation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44335 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_simplify_condjump): Avoid duplicated edges.hubicka2001-07-241-32/+90
| | | | | | | | | | | | | | | | | | | | | | (verify_flow_info): Check for duplicated edges; clarify error reporting. * flow.c (block_label): Update basic_block_for_insn. (commit_edge_insertions): Call compute_bb_for_insn. * flow.c (purge_dead_edges): Handle conditional jumps and conditional returns too. * flow.c (redirect_edge_and_branch, try_optimize_cfg): Use redirect_edge_succ_nodup (redirect_edge_succ_nodup): New. * basic_block.h (redirect_edge_succ_nodup): Declare. * toplev.c (rest_of_compilation): Rebuild CFG before cfg_cleanup after gcse. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44320 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_forward_edges): Accept fallthru edge; Update comment.hubicka2001-07-241-8/+10
| | | | | | | | (try_crossjump_to_edge): Update commetns. (try_crossjump_bb): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44318 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (delete_noop_moves): Do not confuse libcall regions.hubicka2001-07-241-3/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44290 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_simplify_condjump): Use tidy_fallthru_edge.rth2001-07-241-5/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44287 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_simplify_condjump): Unlink insn chain onhubicka2001-07-231-1/+6
| | | | | | | fallthru edge; use can_fallthru. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44268 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (find_sub_basic_block): Declare.hubicka2001-07-231-99/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * flow.c (make_edges): New arguments MIN and MAX; (find_sub_basic_blocks): Revamp to use make_edges and purge_dead_edges. (find_basic_blocks): Update call of find_sub_basic_block. * recog.c (split_all_insns): Always expect CFG to be consistent; call find_sub_basic_blocks in case something has changed. * toplev.c (rest_of_compilation): Always call split_all_insns once CFG has been built. * basic-block.h (delete_noop_moves): Declare. * combine.c (combine_instructions): Call it. (recog_for_combine): Tolerate noop moves (distribute_notes): Force refresh when register dies at noop move. * flow.c (delete_noop_moves): Use BB structure; delete JUMP insns too. (life_analysis): Update delete_noop_moves call. (set_noop_p): Move too ... * rtlanal.c (noop_move_p): ... here. * rtl.h (noop_move_p): Declare. * basic-block.h (purge_all_dead_edges, purge_dead_edges): New functions. * toplev.c (rest_of_compilation): Conditionally call purge_all_dead_edges after combine. * gcse.c (cprop_cc0_jump, cprop_insn): New argument "basic_block". (cprop_jump): Likewise; call purge_dead_edges if substitution suceeded. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44267 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c: Grammar check and clarify a lot of comments.rth2001-07-231-290/+406
| | | | | | | | | | | | | | | | | | (try_simplify_condjump): Rename variables to be clearer. (try_forward_edges): Skip complex and fallthru edges. Rearrange tests to avoid duplicate checks. (flow_find_cross_jump): Likewise. (outgoing_edges_match): Allow match if neither branch has probability data. Loosen probability match to 5%. (try_crossjump_to_edge): Hoist repeated indirection into local variables. (try_crossjump_bb): Don't check complex edges. Eliminate redundant crossjump tests. (try_optimize_cfg): Fix use of bool. Reorganize cheaper checks before more expensive checks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44257 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (split_block): Make sure bb_note is included in therth2001-07-221-0/+5
| | | | | | | new block when splitting before a label. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44250 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (redirect_edge_and_branch_force,hubicka2001-07-221-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | redirect_edge_and_branch, block_label, forwarder_block_p): Declare. * flow.c (redirect_edge_and_branch_force, redirect_edge_and_branch, block_label, forwarder_block_p): Make global. (redirect_edge_and_branch_force): Fix copying of lifeness information. (block_label): Handle EXIT_BLOCK_PTR by returning NULL. * ifcvt.c (dead_or_predictable): Take BB as an new destionation instead of label; update CFG after transformation. (find_if_case_1): Update call, use redirect_edge_and_branch_force for finishing the transformation; handle even case where ELSE does not follow THEN. (find_if_case_2): Update call of dead_or_predictable; simplify CFG update. * emit-rtl.c (split_branch_probability): New global variable. (try_split): Take care to set split_branch_probability and create REG_BR_PROB note for new jump insns. * md.texi (define_split): Document new feature. * i386.c (ix86_split_fp_branch): Redistribute branch probability notes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44249 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_redirect_by_replacing_jump): Correctly compute whichkazu2001-07-211-23/+15
| | | | | | | insns to delete in the presence of cc0 in a jump insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44217 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (redirect_edge_and_branch): Bail out on complex edges.hubicka2001-07-181-19/+26
| | | | | | | | (try_optimize_cfg): Do not remove tail recursive labels before sibcall. * jump.c (mark_jump_label): Do not forward branches. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44118 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix output format foraj2001-07-171-1/+0
| | | | | | | | | | | | x86-64 pic support. * lcm.c (optimize_mode_switching): Avoid warning for unused variable if !NORMAL_MODE * flow.c (try_crossjump_to_edge): Remove unused variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44062 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (CLEANUP_PRE_SIBCALL): New constant.hubicka2001-07-161-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * except.c (finish_eh_generation): Update call of cleanup_cfg; do rebuild_jump_labels instead of jump_optimize * sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise. * toplev.c (rest_of_compulation): Likewise for -Wreturn_type. * flow.c (try_optimize_cfg): Remove unneeded code_labels. * flow.c: Include timevar.h (find_basic_block): Push/pop timevar; (cleanup_cfg): Likewise. * timevar.def (TV_CFG, TV_CLEANUP_CFG): New. * Makefile: Add dependencies on timevar.h * integrate.c (save_for_inline): Kill all BASIC_BLOCK notes. (copy_insn_list): Avoid killing of BASIC_BLOCK notes. * rtl.h (delete_trivially_dead_insns): Add new parameter. * toplev.c (rest_of_compilation): Update calls. * cse.c (set_live_p, insn_live_p, dead_libcall_p): Break out from ... (delete_trivially_dead_insns): ... here; accept new argument preserve_basic_blocks; preserve basic blocks if set. * reg-stack.c (stack_regs_mentioned): Return 0 if stack_regs_mentioned_data is not initialized. (reg_to_stack): Make stack_regs_mentioned survive after the reg-stack is completted; do not call cleanup_cfg. * toplev.c (rest_of_compilation): Do cleanup_cfg before bb-reorder; make cleanup_cfg after bb-reorder to output to debug file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44056 138bc75d-0d04-0410-961f-82ee72b054a4
* * hard-reg-set.h (regs_invalidated_by_call): Declare.rth2001-07-161-2/+1
| | | | | | | | | | | | | | | * regclass.c (regs_invalidated_by_call): Move from cse.c. (init_reg_sets_1): Move initialization from cse_main. * cse.c (regs_invalidated_by_call): Move to regclass.c. (cse_main): Move its initialization also. * df.c (df_insn_refs_record): Use regs_invalidated_by_call. * flow.c (propagate_one_insn): Likewise. * gcse.c (compute_hash_table): Likewise. (compute_kill_rd, compute_store_table): Likewise. * sched-deps.c (sched_analyze_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44053 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (redirect_edge_and_branch_force): Initializerth2001-07-151-2/+10
| | | | | | | | | | global_live_at_start and global_live_at_end. (allocate_bb_life_data): Export. * basic-block.h (allocate_bb_life_data): Declare it. * toplev.c (rest_of_compilation): Call it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44023 138bc75d-0d04-0410-961f-82ee72b054a4
* Re-install recently reverted patch.hubicka2001-07-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | * emit-rtl.c (try_split): Update mark_jump_label call. * flow.c (find_sub_basic_blocks): Likewise. * jump.c (cross_jump_death_matters, find_cross_jump, do_cross_jump, jump_back_p): Kill. (mark_all_labels): Kill second parameter. (jump_optimize, jump_optimize_1): Kill cross_jump parameter. (rebuild_jump_labels, jump_optimize_minimal): Update call of jump_optimize_1. (jump_optimize_1): Kill crossjumping code. (mark_jump_label): Kill cross_jump parameter. * rtl.h (mark_jump_label, jump_optimize): Update prototypes. (JUMP_CROSS_JUMP, JUMP_CROSS_JUMP_DEATH_MATTERS): Kill. * reg-stack.c (reg_to_stack): Do not rebuild if not needed; do splitting. * toplev.c (enum dump_file_index): Kill DFI_jump2; put DFI_stack before DFI_bpro. (dump_file_info): Likewise. (rest_of_compilation): Update calls to jump_optimize; kill jump2 pass; reorganize passes to do reg-stack first, bb-reorder second. * invoke.texi (-d letters doc): Remove the jump2 pass. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44008 138bc75d-0d04-0410-961f-82ee72b054a4
* * bb-reorder.c (skip_insn_after_block): Get past the line number notes.hubicka2001-07-141-4/+4
| | | | | | | | | * flow.c (redirect_edge_and_branch_force, split_edge, try_crossjump_to_edge): Use set_block_for_new_insns. * bb-reorder.c (emit_jump_to_block_after): Call set_block_for_new_insns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44002 138bc75d-0d04-0410-961f-82ee72b054a4
* Revert Jan Hubicka's patch of Fri Jul 13 14:46:21 CEST 2001.geoffk2001-07-131-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43986 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (try_split): Update mark_jump_label call.hubicka2001-07-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | * flow.c (find_sub_basic_blocks): Likewise. * jump.c (cross_jump_death_matters, find_cross_jump, do_cross_jump, jump_back_p): Kill. (mark_all_labels): Kill second parameter. (jump_optimize, jump_optimize_1): Kill cross_jump parameter. (rebuild_jump_labels, jump_optimize_minimal): Update call of jump_optimize_1. (jump_optimize_1): Kill crossjumping code. (mark_jump_label): Kill cross_jump parameter. * rtl.h (mark_jump_label, jump_optimize): Update prototypes. (JUMP_CROSS_JUMP, JUMP_CROSS_JUMP_DEATH_MATTERS): Kill. * reg-stack.c (reg_to_stack): Do not rebuild if not needed; do splitting. * toplev.c (enum dump_file_index): Kill DFI_jump2; put DFI_stack before DFI_bpro. (rest_of_compilation): Update calls to jump_optimize; kill jump2 pass; reorganize passes to do reg-stack first, bb-reorder second. * invoke.texi (-d letters doc): Remove the jump2 pass. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43979 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_optimize_cfg): Delete whole chain of trivially deadhubicka2001-07-121-11/+8
| | | | | | | | basic blocks. (verify_flow_info): Make diagnostics prettier. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43967 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (find_basic_blocks_1): Do not emit NOP after call.hubicka2001-07-121-22/+3
| | | | | | | | * flow.c (outgoing_edges_match): Return early if condition reversal failed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43965 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (merge_blocks_move_successor_nojumps): Do not crashhubicka2001-07-111-22/+570
| | | | | | | | | | | | | | | | | | | | | | | when fallthru edge is present. (mege_blocks): Handle case where creation of jump insn is required. * basic-block.h (CLEANUP_EXPENSIVE, CLEANUP_CROSSJUMP, CLEANUP_POST_REGSTACK): New constants. * except.c (finish_eh_generation): Update call of cleanup_cfg, * jump.c (rtx_renumbered_equal_p): Handle 't' fields. * output.h (cleanup_cfg): Update prototype. * reg-stack.c (reg_to_stack): Use cleanup_cfg instead of jump_optimize * sibcall.c (optimize_sibling_and_tail_recursive_call): Update cleanup_cfg call; kill missleading comment. * toplev.c (rest_of_compilation): Update all cleanup_cfg calls. * flow.c (merge_blocks, try_optimize_cfg, cleanup_cfg): Accept mode parameter; control optimizations performed using it. (flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge, try_crossjump_bb): New functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43950 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c, lcm.c, sched-deps.c:law2001-07-111-0/+4
| | | | | | | | | | | | | s/free on sbitmap vectors/sbitmap_vector_free on sbitmap vectors/g * flow.c (flow_loops_find): Free dom if we found no loops, since we aren't going to save it. * lcm.c (pre_edge_rev_lcm): Free st_antin, st_antout when we are done. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43938 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl>aj2001-07-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * regmove.c (replace_in_call_usage): Fix warnings. * sched-deps.c (add_dependence): Fix warnings. * simplify-rtx.c (simplify_subreg): Likewise. Return NULL_RTX instead of NULL. * reg-stack.c (emit_swap_insn): Eliminate warnings. (subst_asm_stack_regs): Likewise. * combine.c (num_sign_bit_copies): Cast bitwidth to int to avoid warnings. * dwarf2out.c (output_call_frame_info): Declare i as int. (build_abbrev_table): Declare n_alloc as int. (dwarf2out_finish): Initialize die. * except.c: Declare sjlj_funcdef_number as unsigned. (connect_post_landing_pads): Declare j as unsigned. (convert_to_eh_region_ranges): Initialize call_site. (output_function_exception_table): Initialize tt_format_size. * expr.c (move_by_pieces_1): Initialize to1. (store_constructor): Initialize minelt and maxelt. * flow.c (mark_regs_live_at_end): Declare i as unsigned. * function.c (instantiate_decls): Avoid signed/unsigned warning. * c-decl.c (combine_parm_decls): Unused, remove. * c-tree.h: Remove prototype for combine_parm_decls. * reload.c (push_reload): Fix warning. (regno_clobbered_p): Likewise. * reload1.c (replace_pseudos_in_call_usage): Likewise. (reload_combine): Likewise. * bitmap.c: Rename bitmap_zero to bitmap_zero_bits to fix warnings. * bitmap.h: Rename bitmap_zero to bitmap_zero_bits to fix warnings. * bitmap.c (bitmap_operation): Change user. * bitmap.h (EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise. For cp/: 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl> * call.c (build_op_delete_call): Initialize fn. (convert_like_real): Delete conditional. (joust): Initialize *w and *l. * class.c: Add prototype for binfo_ctor_vtable. (get_primary_binfo): Initialize result. * init.c (build_java_class_ref): Initialize name. * typeck.c (unary_complex_lvalue): Do not duplicate the argument to modify, pre-, or post-increment when used as an lvalue and when the argument has side-effects. For ch/: 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl> * ch-tree.h: Remove prototype for combine_parm_decls, unused function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43893 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-07-09 Diego Novillo <dnovillo@redhat.com>dnovillo2001-07-101-3/+7
| | | | | | | | | | | | | | | | | | * basic-block.h (tree_node): Forward declare if needed. (struct basic_block_def): Add fields 'head_tree' and 'end_tree'. (BLOCK_HEAD_TREE): Define. (BLOCK_END_TREE): Define. (struct loops): Rename field 'tree' to 'tree_root'. * flow.c (entry_exit_blocks): Add initializers for 'head_tree' and 'end_tree'. (flow_loops_tree_build): Rename reference to field 'tree' to 'tree_root'. (flow_loops_level_compute): Ditto. * predict.c (estimate_bb_frequencies): Ditto. * tree.h (struct tree_common): Add field 'aux'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43886 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (redirect_edge_and_branch_force): New.hubicka2001-07-091-21/+166
| | | | | | | | | | | | | | | | | | | | | | | (can_fallthru): Ensure that basic blocks are succeeding. (try_optimize_cfg): Do not delete basic block if it is the last one. * flow.c (try_redirect_by_replacing_jump): Do not remove jumps with side effects, unlink chain on fallthru edge; set block for new jump instruction; avoid basic block to over by line number note. * flow.c (try_simplify_condjump): Verify that the condjump is not always falling trought. Re-install patch: * flow.c (try_redirect_by_replacing_jump): Remove cc0 setter. * flow.c (forwarder_block_p): Fix for fallthru blocks. (try_redirect_by_replacing_jump): Update properly the count and frequency information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43867 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (first_insn_after_basic_block_note): Declare.law2001-07-061-0/+22
| | | | | | | | | | | | | | | * flow.c (first_insn_after_basic_block_note): Define. Moved from... * ssa.c (first_insn_after_basic_block_note): Remove. * ssa-dce.c (find_inherently_necessary): Consider BARRIERs necessary. (ssa_eliminate_dead_code): Properly update the CFG and PHI nodes when we find a dead conditional branch. Insert BARRIERs after any blocks with no successors, but which do not have any BARRIERs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43816 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-07-05 Jeffrey Oldham <oldham@codesourcery.com>oldham2001-07-051-28/+9
| | | | | | | | | | * flow.c: Reverse Jan Hubicka's patch of 02July2001. (try_redirect_by_replacing_jump): Reverse updating properly the count and frequency information. Reverse removing cc0 setter. (forwarder_block_p): Reverse fixing for fallthru blocks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43788 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.hubicka2001-07-021-9/+28
| | | | | | | | | * flow.c (forwarder_block_p): Fix for fallthru blocks. (try_redirect_by_replacing_jump): Update properly the count and frequency information. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43708 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.kenner2001-07-021-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43695 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-06-28 Diego Novillo <dnovillo@redhat.com>dnovillo2001-06-291-1/+1
| | | | | | | | * flow.c (dump_bb): Remove unused third argument to call to fprintf when displaying the basic block header. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43649 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (OBJS): Add df.olaw2001-06-281-2/+1
| | | | | | | | | | | | (df.o): Add dependencies. * basic-block.h (flow_depth_first_order_compute): Declare. * flow.c (flow_depth_first_order_compute): No longer declare. Make external. * df.c, df.h: New files. * po/POTFILES.in: Update for new files. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43647 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (try_merge_block): Rename to try_optimize_cfg;hubicka2001-06-281-33/+381
| | | | | | | | | | | | | do basic simplifications on the CFG. (is_forwarder_block_p, can_fallthru, try_redirect_by_replacing_jump, try_simplify_condjump): New. (redirect_edge_and_branch): Try replace jump insn. (flow_delete_insn): Handle deleting of ADDR_VEC insns. * basic-block.h (FALLTHRU_EDGE, BRANCH_EDGE): New macros. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43642 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.md (cmp?i): Simplify; refuse immediate operandhubicka2001-06-281-74/+93
| | | | | | | | | | | | | in alternative 0 * i386.c (cmpsi_operand): Refuse constants. * i386.md (movsi_insv_1, movsi_insv_1_rex64): Allow immediate operand. * flow.c (block_label, redirect_edge_and_branch): Split out from .... (split_edge) .... here; git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43635 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (attempt_auto_inc, try_pre_increment_1): Fix typo.hubicka2001-06-231-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43527 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (mark_set_1, attempt_auto_inc, mark_used_reg,hubicka2001-06-221-5/+9
| | | | | | | | | | | | | | | try_pre_increment_1): compute REG_FREQ using bb->frequency. * regclass.c (loop_cost): Kill. (frequency): New global variable. (record_operand_costs): Replace loop_cost by frequency. (scan_one_insn): Likewise. (regclass): Likewise; set frequency according to bb->frequency. * flow.c (split_edge): Set frequency. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43523 138bc75d-0d04-0410-961f-82ee72b054a4
* * predict.c (block_info_def): Add nvisited.hubicka2001-06-221-0/+3
| | | | | | | | | | | (propagate_freq): Count nvisited; re-queue delayed blocks; handle irreducible regions. * flow.c (dump_edge_info): Dump the probability of edge. (combine_predictions_for_insn): Dump the basic block. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43522 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-06-22 Diego Novillo <dnovillo@redhat.com>dnovillo2001-06-221-8/+8
| | | | | | | | | | | | | | | | * basic-block.h (dump_edge_info): Declare. (clear_edges): Declare. (mark_critical_edges): Declare. * flow.c (dump_edge_info): Remove static declaration. (clear_edges): Ditto. (mark_critical_edges): Ditto. (free_basic_block_vars): Only clear edges and free basic block array if basic_block_info is not NULL. * ssa.c (compute_dominance_frontiers): Remove static declaration. * ssa.h (compute_dominance_frontiers): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43518 138bc75d-0d04-0410-961f-82ee72b054a4
* * regs.h (struct reg_info_def): Add freq field.hubicka2001-06-221-11/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (REG_N_REFS): Update comment. (REG_FREQ): New. * regclass.c (scan_one_insn): Update REG_FREQ. * flow.c (mark_set_1): Update REG_FREQ, make REG_N_SETS unweighted. (attempt_auto_inc): Likewise. (mark_used_reg): Likewise. (try_pre_increment_1): Likewise. * local-alloc.c (struct qty): Add freq field. (alloc_qty): Set freq. (update_equiv_regs): Set REG_FREQ. (QTY_CMP_PRI): Use freq. (combine_regs): Update qty->freq. * global.c (struct allocno): Update comment for n_refs; add freq field. (local_reg_freq): New array. (global_alloc): Update freq field; allocate and initialize local_reg_freq. (allocno_compare): Use freq field. (find_reg): Likewise. * reload1.c (count_pseudo): Use freq isntead of n_refs. (count_spilled_pseudo): Likewise. * tm.texi (GCOV_TYPE_SIZE): Document. * basic-block.h (gcov_type): Define. (struct edge_def): Use gcov_type for count field. (struct basic_block_def): Likewise. * defaults.h (GCOV_TYPE_SIZE): Define. * final.c (end_final): Use GCOV_TYPE_SIZE. * flow.c (dump_edge_info, dump_flow_info, dump_bb): Print count fields using HOST_WIDEST_INT_PRINT_DEC. * gcov-io.h (__fetch_gcov_type, __store_gcov_type, __read_gcov_type, __write_gcov_type): New. (store_long): Remove. * gcov.c (gcov_type): Set default. (struct adj_list): Use gcov_type for arc_count. (bb_info): Use gcov_type for succ_count, pred_count and exec_count. (create_program_flow_graph): Read arc_count properly. (solve_program_flow_graph): 'total' is gcov_type. (output_data): Line_counts is gcov_type, print it properly. * libgcc2.c (struct bb): Counts is gcov_type. (__bb_exit_func): Use __read_gcov_type and __write_gcov_type. * profile.c (LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE): Set default. (GCOV_TYPE_SIZE): Define. (struct bb_info): succ_count and pred_count is gcov_type. (compute_branch_probabilities): Use __read_gcov_type, print read edges to the dump file. (total): Is gcov_type. (gen_edge_profiler): Use GCOV_TYPE_SIZE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43505 138bc75d-0d04-0410-961f-82ee72b054a4
* * flow.c (entry_exit_blocks): Initialize frequency.rth2001-06-211-4/+9
| | | | | | | | (split_block): Copy it. (dump_flow_info): Dump it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43494 138bc75d-0d04-0410-961f-82ee72b054a4