while (1);
}
-/* Remove the single succ/pred forwarder block BB. */
-
-static void
-vect_remove_forwarder (basic_block bb)
-{
- edge pred = single_pred_edge (bb);
- edge succ = single_succ_edge (bb);
- basic_block to = single_succ (bb);
- edge e = redirect_edge_and_branch (pred, to);
- gcc_assert (e == pred);
- copy_phi_arg_into_existing_phi (succ, e);
- delete_basic_block (bb);
- set_immediate_dominator (CDI_DOMINATORS, to, pred->src);
-}
-
/* Given LOOP this function generates a new copy of it and puts it
on E which is either the entry or exit of LOOP. If SCALAR_LOOP is
non-NULL, assume LOOP and SCALAR_LOOP are equivalent and copy the
/* And remove the non-necessary forwarder again. Keep the other
one so we have a proper pre-header for the loop at the exit edge. */
- vect_remove_forwarder (preheader);
+ redirect_edge_pred (single_succ_edge (preheader),
+ single_pred (preheader));
+ delete_basic_block (preheader);
+ set_immediate_dominator (CDI_DOMINATORS, scalar_loop->header,
+ loop_preheader_edge (scalar_loop)->src);
/* Finally after wiring the new epilogue we need to update its main exit
to the original function exit we recorded. Other exits are already
if (scalar_loop != loop)
{
/* Remove the non-necessary forwarder of scalar_loop again. */
- vect_remove_forwarder (preheader);
+ redirect_edge_pred (single_succ_edge (preheader),
+ single_pred (preheader));
+ delete_basic_block (preheader);
+ set_immediate_dominator (CDI_DOMINATORS, scalar_loop->header,
+ loop_preheader_edge (scalar_loop)->src);
preheader = split_edge (loop_preheader_edge (loop));
entry_e = single_pred_edge (preheader);
}
/* And remove the non-necessary forwarder again. Keep the other
one so we have a proper pre-header for the loop at the exit edge. */
- vect_remove_forwarder (new_preheader);
+ redirect_edge_pred (single_succ_edge (new_preheader),
+ single_pred (new_preheader));
+ delete_basic_block (new_preheader);
+ set_immediate_dominator (CDI_DOMINATORS, new_loop->header,
+ loop_preheader_edge (new_loop)->src);
/* Update dominators for multiple exits. */
if (multiple_exits_p)