summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-14 10:10:13 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-14 10:10:13 +0000
commitb65ae28bc94ea0976062738a56aafa7542943a3e (patch)
tree43fec42013e1f42932ed89af0a56c4423c96c03d
parent89d762ad57ccb76b41604d029700859c40614461 (diff)
downloadgcc-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/ChangeLog11
-rw-r--r--gcc/cfgrtl.c9
-rw-r--r--gcc/config/ia64/ia64.c7
-rw-r--r--gcc/recog.c8
-rw-r--r--gcc/toplev.c2
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);