diff options
author | Jan Hubicka <jh@suse.cz> | 2002-02-28 10:11:01 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-02-28 10:11:01 +0000 |
commit | 38c1593d577d667bd1bcb486c0a6b34c218ebb46 (patch) | |
tree | 8d5067250a1945f16e7442da0ebfa33bcd46322d /gcc/emit-rtl.c | |
parent | bde131d34d70387ac376419405e9b5c8a788984c (diff) | |
download | gcc-38c1593d577d667bd1bcb486c0a6b34c218ebb46.zip gcc-38c1593d577d667bd1bcb486c0a6b34c218ebb46.tar.gz gcc-38c1593d577d667bd1bcb486c0a6b34c218ebb46.tar.bz2 |
basic-block.h (BB_REACHABLE): Renumber.
* basic-block.h (BB_REACHABLE): Renumber.
(BB_DIRTY, BB_NEW): New flags.
(clear_bb_flags): Declare.
(update_life_info_in_dirty_blocks): Declare.
* cfg.c (clear_bb_flags): New function.
* cfgrtl.c (create_basic_block_structure): Set flags to BB_NEW.
* emit-rtl.c (add_insn_after, add_insn_before, remove_insn,
reorder_insns, emit_insn_after): Mark block as dirty.
* flow.c (update_life_info): Fix clearing of PROP_LOG_LINKS.
(update_life_info_in_dirty_blocks): New function.
* recog.c (apply_change_group): Dirtify block.
* cse.c (cse_insn): Reorder emitting of jump insn to keep
cfg consistent.
* gcse.c (delete_null_pointer_checks): Likewise.
* toplev.c (dump_file_index): Move cse2 after bp,
add DFI_null
(dump_file_info): Similary.
(rest_of_compilation): Avoid most of CFG rebuilds;
do first if converision after null pointer checks, do cse2
after branch prediction; avoid full liveness rebuild after
initializing subregs.
* invoke.texi (-d options): Document -du, renumber.
* cfgcleanup.c (bb_flags): Remove BB_UPDATE_LIFE.
(notice_new_block): Do not set BB_UPDATE_LIFE.
(try_forward_edges, merge_blocks_move_predecessor_nojumps,
merge_blocks_move_successor_nojumps, merge_blocks,
try_crossjump_to_edge): Likewise.
(try_optimize_cfg): Likewise; use update_life_info_in_dirty_blocks.
* cfgrtl.c (merge_blocks_nomove): Copy b's flags to a.
* ifcvt.c (SET_UPDATE_LIFE, UPDATE_LIFE): Kill.
(merge_of_block): Do not use life_data_ok.
(find_if_case_1): Do not use SET_UPDATE_LIFE.
(if_convert): Use BB_DIRTY mechanizm to update life.
* lcm.c (optimize_mode_switching): Update
update_life_info_in_dirty_blocks
From-SVN: r50127
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 492888f..e248af1 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3276,6 +3276,8 @@ add_insn_after (insn, after) && (bb = BLOCK_FOR_INSN (after))) { set_block_for_insn (insn, bb); + if (INSN_P (insn)) + bb->flags |= BB_DIRTY; /* Should not happen as first in the BB is always either NOTE or LABEL. */ if (bb->end == after @@ -3343,6 +3345,8 @@ add_insn_before (insn, before) && (bb = BLOCK_FOR_INSN (before))) { set_block_for_insn (insn, bb); + if (INSN_P (insn)) + bb->flags |= BB_DIRTY; /* Should not happen as first in the BB is always either NOTE or LABEl. */ if (bb->head == insn @@ -3420,6 +3424,8 @@ remove_insn (insn) && (unsigned int)INSN_UID (insn) < basic_block_for_insn->num_elements && (bb = BLOCK_FOR_INSN (insn))) { + if (INSN_P (insn)) + bb->flags |= BB_DIRTY; if (bb->head == insn) { /* Never ever delete the basic block note without deleting whole basic @@ -3497,6 +3503,7 @@ reorder_insns (from, to, after) && (bb = BLOCK_FOR_INSN (after))) { rtx x; + bb->flags |= BB_DIRTY; if (basic_block_for_insn && (unsigned int)INSN_UID (from) < basic_block_for_insn->num_elements @@ -3504,6 +3511,7 @@ reorder_insns (from, to, after) { if (bb2->end == to) bb2->end = prev; + bb2->flags |= BB_DIRTY; } if (bb->end == after) @@ -4028,6 +4036,7 @@ emit_insns_after (first, after) && (unsigned int)INSN_UID (after) < basic_block_for_insn->num_elements && (bb = BLOCK_FOR_INSN (after))) { + bb->flags |= BB_DIRTY; for (last = first; NEXT_INSN (last); last = NEXT_INSN (last)) set_block_for_insn (last, bb); set_block_for_insn (last, bb); |