+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
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",
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)
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
{
insn = last;
}
- if (insn == bb->end)
+ if (next == NEXT_INSN (bb->end))
break;
}
#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);