This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Basic block renumbering removal


Hello.

It didn't pass first time due to size, second attempt :-)

This patch removes renumbering of basic blocks after basic block
creation/removal; instead basic blocks are now kept in double linked list.

Zdenek Dvorak

Changelog:

	* basic_block.h (struct basic_block_def): Renamed index to sindex,
	added prev_bb and next_bb fields.
	(n_basic_blocks): Renamed to num_basic_blocks.
	(last_basic_block): New, index of last basic block.
	(FOR_BB_BETWEEN, FOR_ALL_BB, FOR_ALL_BB_REVERSE): New macros for
	traversing basic block chain.
	(BLOCK_NUM): index -> sindex.
	(create_basic_block_structure, create_basic_block): Declaration changed.
	(debug_num2bb): Declare.
	(expunge_block_nocompact): Declaration removed.
	(link_block, unlink_block, compact_blocks): Declare.
	* bb-reorder.c (make_reorder_chain, make_reorder_chain_1): Modified.
	* cfg.c (entry_exit_blocks): Initialize new fields.
	(clear_edges, alloc_block, expunge_block, cached_make_edge,
	redirect_edge_pred, dump_flow_info, dump_edge_info,
	alloc_aux_for_blocks, clear_aux_for_blocks, alloc_aux_for_edges,
	free_aux_for_edges): Modified.
	(link_block, unlink_block, compact_blocks, debug_num2bb): New.
	(expunge_block_nocompact): Removed.
	* cfganal.c (can_fallthru, mark_dfs_back_edges, flow_call_edges_add,
	find_unreachable_blocks, create_edge_list, print_edge_list,
	verify_edge_list, flow_edge_list_print, remove_fake_successors,
	remove_fake_edges, flow_reverse_top_sort_order_compute,
	flow_depth_first_order_compute, flow_preorder_transversal_compute,
	flow_dfs_compute_reverse_init, flow_dfs_compute_reverse_add_bb,
	flow_dfs_compute_reverse_execute): Modified.
	* cfgbuild.c (make_edges, make_eh_edge, find_basic_blocks_1,
	find_basic_blocks, find_many_sub_basic_blocks, find_sub_basic_blocks):
	Modified.
	* cfgcleanup.c (try_simplify_condjump, try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps, merge_blocks,
	outgoing_edges_match, try_crossjump_to_edge, try_crossjump_bb,
	try_optimize_cfg, delete_unreachable_blocks, cleanup_cfg): Modified.
	* cfglayout.c (skip_insns_after_block, label_for_bb,
	record_effective_endpoints, scope_to_insns_finalize,
	fixup_reorder_chain, verify_insn_chain, cleanup_unconditional_jumps,
	fixup_fallthru_exit_predecessor, cfg_layout_redirect_edge,
	cfg_layout_duplicate_bb): Modified.
	* cfgloop.c (flow_loops_cfg_dump, flow_loop_dump, flow_loops_dump,
	flow_loop_entry_edges_find, flow_loop_exit_edges_find,
	flow_loop_nodes_find, flow_loop_pre_header_find, flow_loop_scan,
	flow_loops_find, flow_loop_outside_edge_p): Modified.
	* cfgrtl.c (create_basic_block_structure, create_basic_block,
	flow_delete_block, compute_bb_for_insn, split_block,
	try_redirect_by_replacing_jump, redirect_edge_and_branch,
	force_nonfallthru_and_redirect, tidy_fallthru_edge,
	back_edge_of_syntactic_loop_p, split_edge, commit_one_edge_insertion,
	commit_edge_insertions, commit_edge_insertions_watch_calls,
	dump_bb, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
	purge_all_dead_edges): Modified.
	* combine.c (combine_instructions, set_nonzero_bits_and_sign_copies,
	try_combine, nonzero_bits, num_sign_bit_copies, get_last_value_validate,
	get_last_value, reg_dead_at_p, distribute_notes, distribute_links):
	Modified.
	* conflict.c (conflict_graph_compute): Modified.
	* df.c (FOR_ALL_BBS): Removed.
	(df_bitmaps_alloc, df_bitmaps_free, df_alloc, df_analyse_1,
	df_modified_p, df_analyse, df_refs_unlink, df_insn_modify,
	df_dump, hybrid_search_bitmap, iterative_dataflow_sbitmap): Modified.
	* df.h (DF_BB_INFO, DF_REF_BBNO): Modified.
	* dominance.c (init_dom_info, calc_dfs_tree_nonrec, calc_dfs_tree,
	calc_idoms, idoms_to_doms, calculate_dominance_info): Modified.
	* final.c (compute_alignments, final_scan_insn): Modified.
	* flow.c (verify_local_live_at_start, update_life_info,
	update_life_info_in_dirty_blocks, free_basic_block_vars,
	delete_noop_moves, calculate_global_regs_live,
	initialize_uninitialized_subregs, allocate_bb_life_data,
	regno_uninitialized, regno_clobbered_at_setjmp, mark_set_1,
	mark_used_reg, count_or_remove_death_notes): Modified.
	* function.c (thread_prologue_and_epilogue_insns): Modified.
	* gcse.c (struct null_pointer_info): Change typo of current_block
	to basic_block.
	(gcse_main, alloc_gcse_mem, compute_local_properties, compute_sets,
	oprs_unchanged_p, load_killed_in_block_p, record_last_reg_set_info,
	compute_hash_table, alloc_rd_mem, handle_rd_kill_set, compute_kill_rd,
	alloc_avail_expr_mem, expr_killed_p, compute_ae_kill,
	expr_reaches_here_p_work, expr_reaches_here_p, handle_avail_expr,
	classic_gcse, one_classic_gcse_pass, compute_transp, cprop,
	one_cprop_pass, compute_pre_data, pre_expr_reaches_here_p_work,
	pre_expr_reaches_here_p, insert_insn_end_bb, pre_edge_insert,
	pre_delete, one_pre_gcse_pass, compute_transpout,
	invalidate_nonnull_info, delete_null_pointer_checks_1,
	free_code_hoist_mem, compute_code_hoist_vbeinout,
	hoist_expr_reaches_here_p, hoist_code, one_code_hoisting_pass,
	compute_ld_motion_mems, store_ops_ok, find_moveable_store,
	compute_store_table, build_store_vectors, insert_insn_start_bb,
	insert_store, replace_store_insn, free_store_memory, store_motion):
	Modified.
	* global.c (global_alloc, global_conflicts, mark_elimination,
	build_insn_chain): Modified.
	* graph.c (print_rtl_graph_with_bb): Modified.
	* haifa-sched.c (sched_init): Modified.
	* ifcvt.c (SET_ORIG_INDEX, ORIG_INDEX): Removed.
	(find_if_block, find_cond_trap, find_if_case_1, find_if_case_2,
	if_convert): Modified.
	* lcm.c (compute_antinout_edge, compute_earliest, compute_laterin,
	compute_insert_delete, pre_edge_lcm, compute_available,
	compute_farthest, compute_nearerout, compute_rev_insert_delete,
	pre_edge_rev_lcm, make_preds_opaque, optimize_mode_switching):
	Modified.
	* local-alloc.c (alloc_qty, local_alloc, update_equiv_regs): Modified.
	* loop.c (loop_dump_aux): Modified.
	* predict.c (combine_predictions_for_insn, estimate_probability,
	last_basic_block_p, process_note_prediction, process_note_predictions,
	note_prediction_to_br_prob, propagate_freq, counts_to_freqs,
	expensive_function_p, estimate_bb_frequencies,
	compute_function_frequency): Modified.
	* print-rtl.c (print_rtx): Modified.
	* profile.c (GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX, instrument_edges,
	get_exec_counts, compute_branch_probabilities, compute_checksum,
	branch_prob, find_spanning_tree): Modified.
	* recog.c (split_all_insns, peephole2_optimize): Modified.
	* reg-stack.c (reg_to_stack, convert_regs_entry, compensate_edge,
	convert_regs_1, convert_regs_2, convert_regs): Modified.
	* regclass.c (scan_one_insn, regclass): Modified.
	* regmove.c (mark_flags_life_zones, regmove_optimize,
	combine_stack_adjustments): Modified.
	* regrename.c (regrename_optimize, copyprop_hardreg_forward): Modified.
	* reload1.c (reload, reload_combine, copy_eh_notes): Modified.
	* reorg.c (dbr_schedule): Modified.
	* resource.c (find_basic_block, init_resource_info): Modified.
	* sbitmap.c (sbitmap_intersection_of_succs,
	sbitmap_intersection_of_preds, sbitmap_union_of_succs,
	sbitmap_union_of_preds): Modified.
	* sched-deps.c (init_dependency_caches): Modified.
	* sched-ebb.c (schedule_ebbs): Modified.
	* sched-rgn.c (is_cfg_nonregular, build_control_flow, debug_regions,
	find_rgns, compute_trg_info, init_regions, schedule_insns): Modified.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Modified.
	* ssa-ccp.c (examine_flow_edges, optimize_unexecutable_edges,
	ssa_ccp_substitute_constants, ssa_ccp_df_delete_unreachable_insns,
	ssa_const_prop): Modified.
	* ssa-dce.c (set_control_dependent_block_to_edge_map_,
	find_control_dependence, find_pdom, ssa_eliminate_dead_code): Modified.
	* ssa.c (remove_phi_alternative, find_evaluations,
	compute_dominance_frontiers_1, compute_iterated_dominance_frontiers,
	insert_phi_node, rename_block, convert_to_ssa, eliminate_phi,
	make_regs_equivalent_over_bad_edges,
	make_equivalent_phi_alternatives_equival,
	compute_conservative_reg_partition,
	coalesce_regs_in_successor_phi_nodes, compute_coalesced_reg_partition,
	rename_equivalent_regs, convert_from_ssa, for_each_successor_phi):
	Modified.

Attachment: diff_noren_head.diff.bz2
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]