1. 05 Jan, 2002 3 commits
  2. 30 Dec, 2001 1 commit
    • cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump to fail if target… · 6ee3c8e4
      cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump to fail if target is EXIT_BLOCK_PTR, die otherwise.
      
      	* cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump
      	to fail if target is EXIT_BLOCK_PTR, die otherwise.
      	(redirect_edge_and_branch): Likewise.
      	* cfgcleanup.c (try_forward_edge): Don't force jump redirecting
      	if target is EXIT_BLOCK_PTR.
      
      	* gcc.c-torture/compile/20011229-2.c: New test.
      
      From-SVN: r48399
      Jakub Jelinek committed
  3. 24 Dec, 2001 1 commit
  4. 20 Dec, 2001 1 commit
  5. 17 Dec, 2001 2 commits
  6. 15 Dec, 2001 2 commits
  7. 13 Dec, 2001 1 commit
    • predict.c (estimate_probability): Reorganize opcode heuristics. · 0dd0e980
      	* predict.c (estimate_probability): Reorganize opcode heuristics.
      	* predict.def (PRED_OPCODE_POSITIVE, PRED_OPCODE_NONEQUAL,
      	PRED_FPOPCODE): New.
      
      	* i386.c (override_options): Recognize various CPU variants and set
      	SSE/MMX/3dNOW flags accordingly.
      	* i386.h (MASK_MMX_SET, MASK_SSE_SET, MASK_SSE2_SET, MASK_3DNOW_SET,
      	MASK_3DNOW_A_SET): New.
      	(MASK_ACCUMULATE_OUTGOING_ARGS_SET): New.
      	(MASK_NO_ACCUMULATE_OUTGOING_ARGS): Delete.
      	(MASK_*): Renumber.
      	(TARGET_FLAGS): Use new masks.
      	(CPP_CPU_SPECS): Recognize new CPU variants.
      	* invoke.texi (-mcpu): Update documentation.
      
      	* flags.h (flag_prefetch_loop_arrays): Declare.
      	* loop.h (LOOP_PREFETCH): Define new constant.
      	* loop.c (strength_reduce): Call emit_prefetch_instructions.
      	(MAX_PREFETCHES, PREFETCH_BLOCKS_BEFORE_LOOP_MAX,
      	PREFETCH_BLOCKS_BEFORE_LOOP_MIN, PREFETCH_BLOCKS_IN_LOOP_MIN): New
      	constants.
      	(check_store_data): New structure.
      	(check_store, emit_prefetch_instructions, rtx_equal_for_prefetch_p):
      	New functions.
      	* toplev.c: Include insn-flags.h.
      	(flag_prefetch_loop_arrays): New global variable.
      	(lang_independent_option): Add -fprefetch-loop-arrays.
      	(rest_of_compilation) Pass LOOP_PREFETCH when flag_prefetch_loop_arrays
              is set.
      	* Makefile.in (toplev.c): Depend on insn-flags.h.
      	* invoke.texi (-fprefetch-loop-arrays): Document.
      
      	* predict.c (estimate_probability): Distribute the loop exit
      	probability according to number of exit edges.
      
      	* cfgcleanup.c (insns_match_p): Break out from ...;
      	(flow_find_cross_jump): ... here;
      	(outgoing_edges_match): Add parameter MODE; attempt to match everything
      	except for tablejumps.
      	(try_crossjump_to_edge): Accept complex edges.
      	(try_crossjump_bb): Likewise.
      
      From-SVN: r47969
      Jan Hubicka committed
  8. 10 Dec, 2001 1 commit
  9. 15 Nov, 2001 2 commits
    • cfgcleanup.c (try_optimize_cfg): If try_simplify_condjump optimized conditional jump... · feb265ab
      	* cfgcleanup.c (try_optimize_cfg): If try_simplify_condjump optimized
      	conditional jump, request updating life into for the block
      	containing it.  Fix a typo which prevented life info update.
      	Clear blocks bitmap before using it.
      
      	* gcc.c-torture/compile/20011114-3.c: New test.
      
      From-SVN: r47050
      Jakub Jelinek committed
    • jump.c (squeeze_notes): Return true if no real insns were found. · 2b7d71b2
      	* jump.c (squeeze_notes): Return true if no real insns were found.
      	* rtl.h (squeeze_notes): Adjust prototype.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): If
      	squeeze_notes finds no real instructions, abort.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	* loop.c (find_and_verify_loops): Likewise.
      	* stmt.c (expand_end_case): Likewise.
      	* ifcvt.c (dead_or_predicable): Return TRUE if squeeze_notes doesn't
      	find any real instructions.
      
      	* gcc.c-torture/compile/20011114-4.c: New test.
      
      From-SVN: r47048
      Jakub Jelinek committed
  10. 11 Nov, 2001 1 commit
    • ChangeLog.2, [...]: Fix spelling errors. · eaec9b3d
      	* ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog.5, ChangeLog,
      	cfg.c, cfganal.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c,
      	collect2.c, combine.c, config.in, configure, configure.in,
      	conflict.c, dwarf2out.c, dwarfout.c, except.c, final.c, flow.c,
      	genattrtab.c, ggc-page.c, jump.c, lcm.c, predict.c, reg-stack.c,
      	reload1.c, rtlanal.c, sched-rgn.c, toplev.c, unwind-dw2-fde.h: Fix
      	spelling errors.
      
      From-SVN: r46928
      Joseph Myers committed
  11. 04 Nov, 2001 1 commit
    • ChangeLog.2, [...]: Fix spelling errors. · f5143c46
      	* ChangeLog.2, ChangeLog.4, ChangeLog.5, ChangeLog,
      	FSFChangeLog.10, FSFChangeLog.11, alias.c, attribs.c,
      	caller-save.c, calls.c, cfg.c, cfganal.c, cfgcleanup.c, cfgrtl.c,
      	cppmacro.c, fold-const.c, ifcvt.c, local-alloc.c, profile.c,
      	sched-int.h, toplev.c, config/alpha/alpha.c,
      	config/alpha/alpha.md, config/c4x/c4x.h, config/cris/cris.h,
      	config/cris/cris.md, config/i370/i370.md, config/i386/i386.c,
      	config/i386/i386.h, config/i386/i386.md, config/i386/xm-djgpp.h,
      	config/ia64/ia64.c, config/m68hc11/m68hc11.c, config/m68k/m68k.md,
      	config/mcore/mcore.h, config/mmix/mmix.c, config/ns32k/ns32k.h,
      	config/ns32k/ns32k.md, config/rs6000/rs6000.c,
      	config/rs6000/sysv4.h, config/sh/sh.md: Fix spelling errors.
      
      From-SVN: r46760
      Joseph Myers committed
  12. 30 Oct, 2001 1 commit
  13. 29 Oct, 2001 1 commit
    • basic-block.h (purge_all_dead_edges): Add update_life_p argument. · 473fb060
      	* basic-block.h (purge_all_dead_edges): Add update_life_p argument.
      	* cfgcleanup.c (merge_blocks): Update the life flag after merging;
      	fix warning.
      	* cfgrtl.c (purge_all_dead_edges): Allow updating of liveness.
      	(life_analysis): call purge_all_dead_edges after deleting noops.
      	(delete_noop_move): Do not purge CFG.
      	* toplev.c (rest_of_compilation): Update purge_all_dead_edges call.
      
      From-SVN: r46605
      Jan Hubicka committed
  14. 28 Oct, 2001 1 commit
    • ChangeLog.0, [...]: Fix spelling errors. · f63d1bf7
      	* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
      	ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
      	c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
      	collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
      	haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
      	regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
      	system.h, toplev.c: Fix spelling errors.
      
      From-SVN: r46580
      Joseph Myers committed
  15. 27 Oct, 2001 1 commit
  16. 26 Oct, 2001 2 commits
  17. 23 Oct, 2001 1 commit
    • i386.c (ix86_expand_int_movcc): Cleanup; use expand_simple_*op. · 635559ab
      	* i386.c (ix86_expand_int_movcc): Cleanup; use expand_simple_*op.
      
      	* toplev.c (rest_of_compilation): Use CLEANUP_UPDATE_LIFE
      	to avoid update_life_info call.
      	* basic-block.h (CLEANUP_UPATE_LIFE): Define.
      	* cfgcleanup.c (bb_flags): New enum.
      	(BB_FLAGS, BB_SET_FLAG, BB_CLEAR_FLAG, FORWARDER_BLOCK_P): New macros.
      	(notice_new_block, update_forwarder_flag): New functions.
      	(try_simplify_condjump): Use FORWARDER_BLOCK_P.
      	(try_forward_edges): Likewise; update flags.
      	(merge_blocks): Likewise.
      	(outgoing_edges_match): Likewise.
      	(try_crossjump_to_edge): Likewise.
      	(try_optimize_cfg): Likewise; initialize and clear the flags;
      	recompute life info if needed.
      	(cleanup_cfg): No need to clear aux pointers.
      
      From-SVN: r46434
      Jan Hubicka committed
  18. 10 Oct, 2001 1 commit
    • calls.c: Fix formatting. · 6d2f8887
      	* calls.c: Fix formatting.
      	* c-decl.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* combine.c: Likewise.
      	* cppfiles.c: Likewise.
      	* cpplib.c: Likewise.
      	* cppmacro.c: Likewise.
      	* crtstuff.c: Likewise.
      	* cse.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* gcse.c: Likewise.
      	* genattrtab.c: Likewise.
      	* ggc-page.c: Likewise.
      	* integrate.c: Likewise.
      	* libgcc2.c: Likewise.
      	* loop.c: Likewise.
      	* optabs.c: Likewise.
      	* profile.c: Likewise.
      	* protoize.c: Likewise.
      	* real.c: Likewise.
      	* recog.c: Likewise.
      	* reload1.c: Likewise.
      	* reload.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* sdbout.c: Likewise.
      	* stmt.c: Likewise.
      	* toplev.c: Likewise.
      	* varasm.c: Likewise.
      
      From-SVN: r46145
      Kazu Hirata committed
  19. 25 Sep, 2001 1 commit
    • Makefile.in (cfgrtl.o): Add. · ca6c03ca
      	* Makefile.in (cfgrtl.o): Add.
      	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
      	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
      	free_aux_for_edge): Declare.
      	* cfg.c
      	(HAVE_return): Undefine.
      	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
      	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
      	free_aux_for_edge): New global functions.
      	(first_delete_block): New static variable.
      	(init_flow): Clear first_delete_block.
      	(basic_block_for_insn, label_value_list, tail_recursion_label_list,
      	 can_delete_note_p, can_delete_label_p, commit_one_edge_insertion,
      	 try_redirect_by_replacing_jump, last_loop_beg_note,
      	 back_edge_of_syntactic_loop_p, force_nonfallthru_and_redirect,
      	 delete_insn, delete_insn_chain, create_basic_block_structure,
      	 create_basic_block, flow_delete_block, compute_bb_for_insn,
      	 free_bb_for_insn, update_bb_for_insn, set_block_for_insn,
      	 set_block_for_new_insns, split_block, merge_blocks_nomove,
      	 block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
      	 redirect_edge_and_branch, force_nonfallthru_and_redirect,
      	 force_nonfallthru, redirect_edge_and_branch_force, tidy_fallthru_edge,
      	 tidy_fallthru_edges, split_edge, insert_insn_on_edge,
      	 commit_one_edge_insertion, commit_edge_insertions, dump_bb, debug_bb,
      	 debug_bb_n, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
      	 purge_all_dead_edges): Move to ....
      	* cfgrtl.c: New file; .... Here.
      
      	* bb-reorder.c (fixup_reorder_chain): Use alloc_aux_for_block.
      	(reroder_basic_block): Use alloc_aux_for_blocks.
      	* predict.c (estimate_bb_frequencies): Likewise; use
      	alloc_aux_for_edges.
      	* profile.c (compute_branch_probabilities): Likewise.
      	(branch_prob): Likewise.
      	* reg-stack.c (reg_to_stack): Likewise.
      
      	* emit-rtl.c (emit_insns_after): Never return NULL.
      
      	* basic-block.h (set_block_for_new_insns): Delete.
      	* cfgrtl.c (set_block_for_new_insns): Delete.
      
      	* cfgcleanup.c (try_optimize_cfg): Add fake exit edges for noreturn
      	calls when crossjumping.
      
      	* cfgcleanup.c (try_simplify_condjump): Cleanup invert_jump call.
      	* unroll.c (copy_loop_body): Use delete_insn.
      
      	* final.c (final, final_scan_insn): Use delete_insn/delete_note.
      	* function.c (fixup_var_refs_insn, fixup_var_refs_1,
      	keep_stack_depressed): Likewise.
      	* gcse.c (cprop_cc0_jump): Likewise.
      	* local-alloc.c (update_equiv_regs): Likewise.
      	* loop.c (scan_loop, loop_delete_insns): Likewise.
      	* regmove.c (try_auto_increment, fixup_match_1): Likewise.
      	* reload1.c (reload, calculate_needs_all_insns, reload_as_needed,
      	delete_output_reload, delete_address_reloads_1,
      	reload_cse_delete_noop_set, reload_combine, reload_cse_move2add):
      	Likewise.
      	* sibcall.c (replace_call_placeholder): Likewise.
      	* cse.c (cse_insn): Likewise.
      
      From-SVN: r45807
      Jan Hubicka committed
  20. 21 Sep, 2001 3 commits
    • cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave ADDR_VEC or… · f62ce55b
      cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block...
      
      * cfgcleanup.c (merge_blocks_move_successor_nojumps): Don't leave
      ADDR_VEC or ADDR_DIFF_VEC jump insns as part of the basic block
      once merging is complete.
      
      From-SVN: r45730
      Richard Earnshaw committed
    • cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes that would be… · 7106d491
      cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes that would be invalid after a merge.
      
      * cfgcleanup.c (flow_find_cross_jump): Delete any REG_EQUAL notes
      that would be invalid after a merge.
      
      From-SVN: r45727
      Richard Earnshaw committed
    • basic-block.h (flow_delete_insn, [...]): Kill. · 53c17031
      	* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill.
      	* cfg.c (delete_insn): Rename from ....; use remove_insn; do not
      	remove some labels.
      	(flow_delete_insn): This one.
      	(delete_insn_chain): Rename from ...; do not care labels.
      	(flow_delete_insn_chain): ... this one.
      	(flow_delete_block): Remove the insns one BB has been expunged.
      	(merge_blocks_nomove): Likewise.
      	(try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care
      	updating BB boundaries.
      	(tidy_fallthru_edge): Likewise.
      	(commit_one_edge_insertion): Likewise.
      	* cfgbuild.c (find_basic_block): Likewise.
      	(find_basic_blocks_1): Likewise.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise.
      	(try_crossjump_to_edge): Likewise.
      	(try_optimize_cfg): Likewise.
      	* cse.c (delete_trivially_dead_insns): Likewise.
      	* df.c (df_insn_delete): Likewise.
      	* doloop.c (doloop_modify): Use delete_related_insns.
      	* emit-rtl.c (try_split): Likewise.
      	(remove_insn): Update BB boundaries.
      	* expect.c (connect_post_landing_pads): Use delete_related_insns.
      	* flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care
      	updating BB boundaries.
      	(propagate_block_delete_insn): Likewise.
      	(propagate_block_delete_libcall): Likewise.
      	* function.c (delete_handlers): Use delete_related_insns.
      	(thread_prologue_and_epilogue_insns): Likewise.
      	* gcse.c (delete_null_pointer_checks): Use delete_related_insns.
      	* genpeep.c (gen_peephole): Use delete_related_insns.
      	* ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating
      	BB boundaries.
      	(find_cond_trap): Likewise.
      	* integrate.c (save_for_inline): Use delete_related_insns.
      	(copy_insn_list): Likewise.
      	* jump.c (pruge_linie_number_notes): Likewise.
      	(duplicate_loop_exit_test): Likewise.
      	(delete_computation): Likewise.
      	(delete_related_insn): Rename from ...; use delete_insn
      	(delete_insn): ... this one.
      	(redirect_jump): Use delete_related_insns.
      	* loop.c (scan_loop): Likewise.
      	(move_movables): Likewise.
      	(find_and_verify_loops): Likewise.
      	(check_dbra_loop): Likewise.
      	* recog.c (peephole2_optimize): Likewise.
      	* reg-stack.c (delete_insn_for_stacker): Remove.
      	(move_for_stack_reg): Use delete_insn.
      	* regmove.c (combine_stack_adjustments_for_block): Likewise.
      	* reload1.c (delete_address_reloads): Use delete_related_insns.
      	(fixup_abnormal_edges): Use delete_insn.
      	* recog.c (emit_delay_sequence): Use delete_related_insns.
      	(delete_from-delay_slot): Likewise.
      	(delete_scheduled_jump): likewise.
      	(optimize_skip): Likewise.
      	(try_merge_delay_insns): Likewise.
      	(full_simple_delay_slots): Likewise.
      	(fill_slots_from_thread): Likewise.
      	(relax_delay_slots): Likewise.
      	(make_return_insns): Likewise.
      	(dbr_schedule): Likewise.
      	* rtl.h (delete_insn): Rename to delete_related_insns.
      	(delete_insn, delete_insn_chain): New prototypes.
      	* ssa-ccp (sse_fast_dce):  Remove deleting of DEF, as it is done
      	by df_insn_delete already.
      	* ssa-dce.c (delete_insn_bb): Use delete_insn.
      	* ssa.c (convert_from_ssa): Use delete_related_insns.
      	* unroll.c (unroll_loop): Likewise.
      	(calculate_giv_inc): Likewise.
      	(copy_loop_body): Likewise.
      
      	* i386-protos.h (ix86_libcall_value, ix86_function_value,
      	ix86_function_arg_regno_p, ix86_function_arg_boundary,
      	ix86_return_in_memory, ix86_function_value): Declare.
      	* i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers):
      	new static valurables.
      	(x86_64_reg_class): New enum
      	(x86_64_reg_class_name): New array.
      	(classify_argument, examine_argument, construct_container,
      	 merge_classes): New static functions.
      	(optimization_options): Enable flag_omit_frame_pointer and disable
      	flag_pcc_struct_return on 64bit.
      	(ix86_libcall_value, ix86_function_value,
      	ix86_function_arg_regno_p, ix86_function_arg_boundary,
      	ix86_return_in_memory, ix86_function_value): New global functions.
      	(init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg.
      	(function_arg_advance): Handle x86_64 passing conventions.
      	(function_arg): Likewise.
      	* i386.h (FUNCTION_ARG_BOUNDARY): New macro.
      	(RETURN_IN_MEMORY): Move offline.
      	(FUNCTION_VALUE, LIBCALL_VALUE): Likewise.
      	(FUNCTION_VALUE_REGNO_P): New macro.
      	(FUNCTION_ARG_REGNO_P): Move offline.
      	(struct ix86_args): Add maybe_vaarg.
      	* next.h (FUNCTION_VALUE_REGNO_P): Delete.
      	* unix.h (FUNCTION_VALUE_REGNO_P): Delete.
      
      From-SVN: r45726
      Jan Hubicka committed
  21. 16 Sep, 2001 1 commit
    • basic-block.h (free_bb_for_insn): Declare. · 3c030e88
      	* basic-block.h (free_bb_for_insn): Declare.
      	* bb-reorder.c (label_for_bb): Use block_label.
      	(emit_jump_to_block_after): Remove.
      	(insert_intra_1): Do not update block_for_insn.
      	(insert_inter_bb_scope_notes): Likewise; update bb->end
      	* cfg.c (free_bb_for_insn): New.
      	(try_rediret_by_replacing_jump): Avoid set_block_for_new_insns call.
      	(force_nonfallthru_and_redirect): Likewise; do not update BB boundaries.
      	(commit_one_edge_insertion): Likewise.
      	(commit_one_edge_insertion): Do not update BB boundary.
      	(commit_edge_insertions): Do not call compute_bb_for_insn.
      	* cfgbuild.c (find_basic_blocks): Do not free basic_block_for_insn.
      	* cfgcleanup.c (merge_blocks_move_predecessor): Use reorder_insns_nobb.
      	(merge_blocks_move_successor_nojumps): Likewise.
      	(try_crossjump_to_edge): Do not update block_for_insn.
      	* combine.c (combine_instructions): Remove compute_bb_for_insn call.
      	* df.c (df_pattern_emit_later): Do not update BB boundary.
      	(df_jump_pattern_emit_after): Likewise.
      	(df_insn_move_before): Use emit_insn_before.
      	* emit-rtl.c (try_split): Emit after trial to get bb boundary updated
      	 properly.
      	(add_insn_after, add_insn_before, emit_insns_after): Update BB
      	boundaries and basic_block_for_insn.
      	(reorder_insns_nobb): Rename from reorder_insns.
      	(reorder_insns): New.
      	(emit_block_insn_before, emit_block_insn_after): Kill.
      	* flow.c (check_function_return_warnings): Do not call
      	compute_bb_for_insn; Do not free basic_block_for_insn.
      	(attempt_auto_inc): Do not update basic_block_for_insn.
      	* function.c (emit_return_into_block): Likewise;
      	do not update BB boundaries.
      	* gcse.c (handle_avail_expr): Do not update basic_block_for_insn.
      	(insert_insn_end_bb): Use emit_insn_before; Likewise.
      	(pre_insert_copy_insn): Likewise.
      	(update_ld_motion_notes): Likewise.
      	(insert_insn_start_bb): Likewise.
      	(replace_store_insn): Likewise.
      	* ifcvt.c (noce_process_if_block): Likewise.
      	(if_convert): Do not call compute_bb_for_insn.
      	* lcm.c (optimize_mode_switching): Do not update BB boundaries.
      	Use emit_insn_before and emit_insn_after.
      	* recog.c (split_all_insns): Do not update BB boundaries;
      	Do not call compute_bb_for_insn.
      	(peephole2_optimize): Do not update BB boundaries.
      	* reg-stack.c (emit_pop_insn): Use emit_insn_after and
      	emit_insn_before.
      	(emit_swap_insn): Likewise.
      	(convert_regs_1): Likewise.
      	* reload1.c (reload): Call compute_bb_for_insn.
      	* rtl.h (reorder_insns_nobb): Declare.
      	* ssa.c (rename_equivalent_regs): Use emit_insn_before.
      	* toplev.c (rest_of_compilation): Call free_bb_for_insn
      	at places CFG is invalidated; do not call compute_bb_for_insn.
      
      	* cfg.c (expunge_block): Invalidate BB structure.
      
      	* (merge_blocks_nomove): Update properly BLOCK_FOR_INSN
      	array.
      
      	* cfg.c (verify_flow_info): Verify the basic_block_for_insn array.
      
      From-SVN: r45647
      Jan Hubicka committed
  22. 11 Sep, 2001 2 commits
    • basic-block.h (EDGE_CRITICAL): Remove; renumber other flags. · 4262e623
      	* basic-block.h (EDGE_CRITICAL): Remove; renumber other flags.
      	(EDGE_CRITICAL_P): New predicate.
      	* cfg.c (force_nonfallthru_and_redirect, split_edge): Kill EDGE_CRITICAL
      	handling.
      	(insert_insn_on_edge): Use EDGE_CRITICAL_P.
      	(dump_edge_info): Remove "crit".
      	* cfganal.c (mark_critical_edges): Kill.
      	* cfgbuild.c (find_basic_blocks): Remove mark_critical_edges call.
      	* cfgcleanup.c (cleanup_cfg): Likewise.
      	* profile.c (instrument_edges): Use EDGE_CRITICAL_P.
      	(find_spanning_tree): Likewise.
      	* reg-stack.c (convert_regs_1): Likewise.
      	* ssa.c (mark_regs_equivalent_over_bad_edges): Likewise.
      
      	* basic-block.h (create_basic_block_structure): New.
      	(create_basic_block): Update prototype.
      	(force_nonfallthru): New.
      	* bb-reorder.c (fixup_reorder_chain): Fixup use force_nonfallthru.
      	* cfg.c (create_basic_block_structure): Rename from create_basic_block;
      	handle updating of block_for_insn, creating of empty BBs and BBs at
      	the end of INSN chain.
      	(create_basic_block): New function.
      	(split_block): Use create_basic_block.
      	(force_nonfallthru_and_redirect): Break out from ...; cleanup
      	(redirect_edge_and_branch_force): ... here.
      	(force_nonfallthru): New.
      	(split_edge): Rewrite to use force_nonfallthru and create_block.
      	* cfgbuild.c (find_basic_blocks_1): Use create_basic_block_structure.
      	(find_basic_blocks): Free basic_block_for_insn.
      	* cfgcleanup.c (merge_blocks): Use force_nonfallthru.
      
      	* cfg.c: Fix formating.
      	* cfgcleanup.c: Fix formating.
      	(merge_blocks, tail_recursion_label_p): Return bool.
      	(merge_blocks_move_predecessor_nojumps,
      	 merge_blocks_move_successor_nojumps): Return void.
      
      From-SVN: r45549
      Jan Hubicka committed
    • basic-block.h (cached_make_edge, [...]): New. · 7ded4467
      	* basic-block.h (cached_make_edge, make_single_succ): New.
      	(make_edge): Remove first parameter.
      	* bb-reroder.c (fixup_reorder_chain): Use make_single_succ_edge.
      	* cfg.c (cached_make_edge): Rename from make_edge; return newly
      	created edge; use obstack allocation.
      	(make_edge, make_single_succ_edge): New.
      	(first_removed_edge): New static variable.
      	(init_flow): Initialize first_removed_edge and n_edges.
      	(clear_edges): Use remove_edge.
      	(flow_delete_block): Likewise.
      	(remove_edge): Add removed edges to the removed edges list.
      	(split_block, redirect_edge_and_branch_force, split_edge):
      	Use make_edge.
      	* cfganal.c (flow_call_edges_add): Updaet make_edge call.
      	(add_noreturn_fake_exit_edges): Likewise.
      	(connect_infinite_loops_to_exit): Liekwise.
      	* cfgbuild.c (make_label_edge, make_edges, find_sub_basic_blocks):
      	Use cached_make_edge.
      	* cfgcleanup.c (try_crossjump_to_edge): Use make_single_succ_edge.
      	* profile.c (branch_prob): Update make_edge call.
      	* ssa-dce.c (ssa_eliminate_dead_code): Likewise.
      
      From-SVN: r45540
      Jan Hubicka committed
  23. 10 Sep, 2001 1 commit
    • Makefile.in (cfg.o, [...]): New. · 402209ff
      	* Makefile.in (cfg.o, cfganal.o, cfgloop.o, cfgbuild.o, cfgcleanup.o):
      	New.
      	* basic-block.h (flow_obstack, label_value_list,
      	tail_recursion_label_list): Declare
      	(tidy_fallthru_edges): Declare.
      	(expunge_block, last_loop_beg_note): Delete.
      	(can_fallthru, flow_nodes_print, flow_edge_list_print): Declare.
      	* cfg.c: New file
      	(basic_block_for_insn, label_value_list): Move from flow.c; make global.
      	(n_basic_blocks, n_edges, basic_block_info, entry_exit_blocks,
      	init_flow, clear_edges, can_delete_note_p, can_delete_label_p,
      	flow_delete_insn, flow_delete_insn_chain, create_basic_block,
      	expunge_block, flow_delete_block, compute_bb_for_insn,
      	update_bb_for_insn, set_block_for_insn, set_block_for_new_insns,
      	make_edge, remove_edge, redirect_edge_succ, redirect_edge_succ_nodup,
      	redirect_edge_pred, split_block, marge_blocks_nomove, block_label,
      	try_redirect_by_replacing_jump, last_loop_beg_note,
      	redirect_edge_and_branch, redirect_edge_and_branch_force,
      	tidy_fallthru_edge, tidy_fallthru_edges, back_edge_of_syntactic_loop_p,
      	split_edge, insert_insn_on_edge, commit_one_edge_insertion,
      	commit_edge_insertions, dump_flow_info, debug_flow_info,
      	dump_edge_info, dump_bb, debug_bb, debug_bb_n, print_rtl_with_bb,
      	verify_flow_info, purge_dead_edges, purge_all_dead_edges):
      	Move here from flow.c
      	* cfganal.c: New file.
      	(forwarder_block_p, can_fallthru, mark_critical_edges,
      	 mark_dfs_back_edges, need_fake_edge_p, flow_call_edges_add,
      	 find_unreachable_blocks, create_edge_list, free_edge_list,
      	 print_edge_list, verify_edge_list, find_edge_index, flow_nodes_print,
      	 flow_edge_list_print, remove_fake_successors, remove_fake_edges,
      	 add_noreturn_fake_exit_edges, connect_infinite_loops_to_exit,
      	 flow_reverse_top_sort_order_compute, flow_depth_first_order_compute,
      	 flow_dfs_compute_reverse_init, flow_dfs-compute_reverse_add_bb,
      	 flow_dfs-compute_reverse_execute, flow_dfs_compute_reverse_finish);
      	Move here from flow.c
      	* cfgbuild.c: New file
      	(count_basic_blocks, find_label_refs, make_label_edge, make_eh_edge,
      	 make_edges, find_basic_blocks_1, find_basic_blocks,
      	 find_sub_basic_blocks): Move here from flow.c
      	* cfgcleanup.c: New file.
      	(try_simplify_condjump, try_forward_edges, tail_recursion_label_p,
      	 merge_blocks_move_predecessor_nojumps,
      	 merge_blocks_move_successor_nojumps, merge_blocks,
      	 flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge,
      	 try_crossjump_bb, try_optimize_cfg): Move here from flow.c
      	(delete_unreachable_blocks, cleanup_cfg): Likewise; return true
      	if succeeded.
      	* cfgloop.c: New file
      	(flow_loops_cfg_dump, flow_loop_nested_p, flow_loop_dump,
      	 flow_loops_dump, flow_loops_free, flow_loop_entry_edges_find,
      	 flow_loop_exit_edges_find, flow_loop_nodes_find,
      	 flow_loop_pre_header_scan, flow_loop_pre_header_find,
      	 flow_loop_tree_node_add, flow_loops_tree_build,
      	 flow_loop_level_compute, flow_loops_level_compute, flow_loop_scan,
      	 flow_loops_find, flow_loops_update, flow_loop_outside_edge_p):
      	Move here from flow.c
      	* flow.c: Remove everything moved elsewhere
      	* output.h (cleanup_cfg): Return bool.
      
      	* bb-reorder.c (reorder_block_def): Remove 'index'.
      	(insert_intra_1): Add argument BB, set block for new note.
      	(make_reorder_chain): Do not depdent on BB indexes.
      	(make_reorder_chain_1): Do not use BB indexes.
      	(label_for_bb): Likewise; set BB for new insn.
      	(emit_jump_to_block_after): Likewise.
      	(fixup_reoder_chain): Sanity check that all basic blocks
      	are chained; verify newly created insn chain; remove
      	undocnitional jump simplifying; Do not use BB indexes;
      	properly initialize count and frequency information;
      	dump reordered sequence.
      	(insert_intra_bb_scope_notes): update call of insert_intra_1.
      	(insert_inter_bb_scope_notes): Set block for new insn.
      	(reorder_basic_blocks): Dump flow info before reoredering.
      
      From-SVN: r45504
      Jan Hubicka committed