diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-14 10:10:13 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-14 10:10:13 +0000 |
commit | b65ae28bc94ea0976062738a56aafa7542943a3e (patch) | |
tree | 43fec42013e1f42932ed89af0a56c4423c96c03d | |
parent | 89d762ad57ccb76b41604d029700859c40614461 (diff) | |
download | gcc-b65ae28bc94ea0976062738a56aafa7542943a3e.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50765 138bc75d-0d04-0410-961f-82ee72b054a4
-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 17e1ff34cba..ea822d1d952 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 6e929eb0dad..5bf33bc0795 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 8afa9515ad2..186f4b3d92b 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 9eb953878af..8ad3ed2a1ce 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 fbf6e6ba395..fa8af755fdb 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); |