diff options
author | Jan Hubicka <jh@suse.cz> | 2002-03-14 11:10:13 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-03-14 10:10:13 +0000 |
commit | 1e3881c2a0551c33bfdbe39463225d0ebf0d5e2a (patch) | |
tree | 43fec42013e1f42932ed89af0a56c4423c96c03d /gcc | |
parent | 200ef6348c95471448d8e3b97918e1bced384baf (diff) | |
download | gcc-1e3881c2a0551c33bfdbe39463225d0ebf0d5e2a.zip gcc-1e3881c2a0551c33bfdbe39463225d0ebf0d5e2a.tar.gz gcc-1e3881c2a0551c33bfdbe39463225d0ebf0d5e2a.tar.bz2 |
toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup call after liveness analysis.
* toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup
call after liveness analysis.
* recog.c (split_insn): Use delete_insn_and_edges.
* cfgrtl.c (verify_flow_info): Be permisive about non-any_condjump
instructions to have branch prediction notes.
* ia64reorg.c (ia64_reorg): Do not rebuild CFG.
From-SVN: r50765
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 9 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 7 | ||||
-rw-r--r-- | gcc/recog.c | 8 | ||||
-rw-r--r-- | gcc/toplev.c | 2 |
5 files changed, 20 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 17e1ff3..ea822d1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +Thu Mar 14 11:03:12 CET 2002 Jan Hubicka <jh@suse.cz> + + * toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup + call after liveness analysis. + + * recog.c (split_insn): Use delete_insn_and_edges. + + * cfgrtl.c (verify_flow_info): Be permisive about non-any_condjump + instructions to have branch prediction notes. + * ia64reorg.c (ia64_reorg): Do not rebuild CFG. + 2002-03-14 Geoffrey Keating <geoffk@redhat.com> * configure.in: Don't pass -Wno-long-long to a ADA compiler diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 6e929eb..5bf33bc0 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1745,14 +1745,9 @@ verify_flow_info () rtx note; if (INSN_P (bb->end) - && (note = find_reg_note (bb->end, REG_BR_PROB, NULL_RTX))) + && (note = find_reg_note (bb->end, REG_BR_PROB, NULL_RTX)) + && any_condjump_p (bb->end)) { - if (!any_condjump_p (bb->end)) - { - error ("verify_flow_info: REG_BR_PROB on non-condjump", - bb->index); - err = 1; - } if (INTVAL (XEXP (note, 0)) != BRANCH_EDGE (bb)->probability) { error ("verify_flow_info: REG_BR_PROB does not match cfg %i %i", diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 8afa951..186f4b3 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -6733,9 +6733,10 @@ ia64_reorg (insns) if (optimize == 0) split_all_insns_noflow (); - /* Make sure the CFG and global_live_at_start are correct - for emit_predicate_relation_info. */ - find_basic_blocks (insns, max_reg_num (), NULL); + /* We are freeing block_for_insn in the toplev to keep compatibility + with old MDEP_REORGS that are not CFG based. Recompute it now. */ + compute_bb_for_insn (get_max_uid ()); + /* update_life_info_in_dirty_blocks should be enought here. */ life_analysis (insns, NULL, PROP_DEATH_NOTES); if (ia64_flag_schedule_insns2) diff --git a/gcc/recog.c b/gcc/recog.c index 9eb9538..8ad3ed2 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -2682,11 +2682,7 @@ split_insn (insn) allocation, and there are unlikely to be very many nops then anyways. */ if (reload_completed) - { - PUT_CODE (insn, NOTE); - NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; - NOTE_SOURCE_FILE (insn) = 0; - } + delete_insn_and_edges (insn); } else { @@ -2761,7 +2757,7 @@ split_all_insns (upd_life) insn = last; } - if (insn == bb->end) + if (next == NEXT_INSN (bb->end)) break; } diff --git a/gcc/toplev.c b/gcc/toplev.c index fbf6e6b..fa8af75 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2999,7 +2999,7 @@ rest_of_compilation (decl) #endif life_analysis (insns, rtl_dump_file, PROP_FINAL); if (optimize) - cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) + cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0) | CLEANUP_UPDATE_LIFE | (flag_thread_jumps ? CLEANUP_THREADING : 0)); timevar_pop (TV_FLOW); |