/* Fix up the CFG for the successful change we just made. */
redirect_edge_succ (e, EXIT_BLOCK_PTR);
+ e->flags &= ~EDGE_CROSSING;
}
VEC_free (basic_block, heap, src_bbs);
return unconverted;
if (pic_offset_table_rtx)
add_to_hard_reg_set (&set_up_by_prologue, Pmode,
PIC_OFFSET_TABLE_REGNUM);
+ if (stack_realign_drap && crtl->drap_reg)
+ add_to_hard_reg_set (&set_up_by_prologue, GET_MODE (crtl->drap_reg),
+ REGNO (crtl->drap_reg));
/* We don't use a different max size depending on
optimize_bb_for_speed_p because increasing shrink-wrapping
&& !active_insn_between (BB_HEAD (last_bb), BB_END (last_bb)))
convert_jumps_to_returns (last_bb, false, NULL);
- if (EDGE_COUNT (exit_fallthru_edge->src->preds) != 0)
+ if (EDGE_COUNT (last_bb->preds) != 0
+ && single_succ_p (last_bb))
{
last_bb = emit_return_for_exit (exit_fallthru_edge, false);
epilogue_end = returnjump = BB_END (last_bb);