diff options
author | Jan Hubicka <jh@suse.cz> | 2001-09-16 20:21:30 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-09-16 20:21:30 +0000 |
commit | 3c030e88e793d2aff78a76e9df248bc029c9048c (patch) | |
tree | 3f3b141a9f45004a367eed069d691638b036e04f /gcc/toplev.c | |
parent | 345894b43fd5709b3990ff7897ed2b941d62742c (diff) | |
download | gcc-3c030e88e793d2aff78a76e9df248bc029c9048c.zip gcc-3c030e88e793d2aff78a76e9df248bc029c9048c.tar.gz gcc-3c030e88e793d2aff78a76e9df248bc029c9048c.tar.bz2 |
basic-block.h (free_bb_for_insn): Declare.
* 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
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index d09dcca..6364305 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2751,6 +2751,9 @@ rest_of_compilation (decl) find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg (CLEANUP_PRE_SIBCALL | CLEANUP_PRE_LOOP); optimize = saved_optimize; + + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); } current_function_nothrow = nothrow_function_p (); @@ -2859,6 +2862,9 @@ rest_of_compilation (decl) rebuild_jump_labels (insns); find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_PRE_LOOP); + + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); copy_loop_headers (insns); purge_line_number_notes (insns); @@ -2940,6 +2946,8 @@ rest_of_compilation (decl) timevar_pop (TV_FROM_SSA); ggc_collect (); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); } timevar_push (TV_JUMP); @@ -2957,6 +2965,8 @@ rest_of_compilation (decl) if_convert (0); timevar_pop (TV_IFCVT); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); /* Try to identify useless null pointer tests and delete them. */ if (flag_delete_null_pointer_checks) delete_null_pointer_checks (insns); @@ -3006,6 +3016,8 @@ rest_of_compilation (decl) find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); timevar_pop (TV_JUMP); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); } /* Run this after jump optmizations remove all the unreachable code @@ -3021,6 +3033,8 @@ rest_of_compilation (decl) cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); delete_null_pointer_checks (insns); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); timevar_pop (TV_JUMP); } @@ -3059,6 +3073,8 @@ rest_of_compilation (decl) save_cfj = flag_cse_follow_jumps; flag_cse_skip_blocks = flag_cse_follow_jumps = 0; + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); /* If -fexpensive-optimizations, re-run CSE to clean up things done by gcse. */ if (flag_expensive_optimizations) @@ -3080,6 +3096,8 @@ rest_of_compilation (decl) delete_trivially_dead_insns (insns, max_reg_num (), 0); find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); timevar_pop (TV_JUMP); if (flag_expensive_optimizations) @@ -3105,6 +3123,7 @@ rest_of_compilation (decl) { timevar_push (TV_LOOP); open_dump_file (DFI_loop, decl); + free_bb_for_insn (); if (flag_rerun_loop_opt) { @@ -3166,6 +3185,8 @@ rest_of_compilation (decl) timevar_pop (TV_JUMP); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); reg_scan (insns, max_reg_num (), 0); tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file); @@ -3175,6 +3196,8 @@ rest_of_compilation (decl) rebuild_jump_labels (insns); find_basic_blocks (insns, max_reg_num (), rtl_dump_file); cleanup_cfg (CLEANUP_EXPENSIVE); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); timevar_pop (TV_JUMP); } } @@ -3488,8 +3511,6 @@ rest_of_compilation (decl) verify_flow_info (); #endif - compute_bb_for_insn (get_max_uid ()); - /* If optimizing, then go ahead and split insns now. */ if (optimize > 0) split_all_insns (0); @@ -3594,7 +3615,7 @@ rest_of_compilation (decl) reg_to_stack (insns, rtl_dump_file); - close_dump_file (DFI_stack, print_rtl, insns); + close_dump_file (DFI_stack, print_rtl_with_bb, insns); timevar_pop (TV_REG_STACK); ggc_collect (); @@ -3619,6 +3640,9 @@ rest_of_compilation (decl) } compute_alignments (); + /* CFG is no longer maitained up-to-date. */ + free_bb_for_insn (); + /* If a machine dependent reorganization is needed, call it. */ #ifdef MACHINE_DEPENDENT_REORG timevar_push (TV_MACH_DEP); @@ -3632,8 +3656,6 @@ rest_of_compilation (decl) ggc_collect (); #endif - /* CFG no longer kept up to date. */ - purge_line_number_notes (insns); cleanup_barriers (); |