| Index: gcc/gcc/sched-ebb.c
|
| diff --git a/gcc/gcc/sched-ebb.c b/gcc/gcc/sched-ebb.c
|
| index 2773a36d1bdc9003274cbf6560e6e6cb6bdde6d1..534df4ad0f7b9c5326fdaf1fbf3befba9f57c6ba 100644
|
| --- a/gcc/gcc/sched-ebb.c
|
| +++ b/gcc/gcc/sched-ebb.c
|
| @@ -144,13 +144,13 @@ begin_schedule_ready (rtx insn, rtx last)
|
| instruction scheduled after last control flow instruction.
|
| In this case we can create new basic block. It is
|
| always exactly one basic block last in the sequence. */
|
| -
|
| +
|
| FOR_EACH_EDGE (e, ei, last_bb->succs)
|
| if (e->flags & EDGE_FALLTHRU)
|
| break;
|
|
|
| #ifdef ENABLE_CHECKING
|
| - gcc_assert (!e || !(e->flags & EDGE_COMPLEX));
|
| + gcc_assert (!e || !(e->flags & EDGE_COMPLEX));
|
|
|
| gcc_assert (BLOCK_FOR_INSN (insn) == last_bb
|
| && !IS_SPECULATION_CHECK_P (insn)
|
| @@ -176,7 +176,7 @@ begin_schedule_ready (rtx insn, rtx last)
|
| else
|
| /* Create an empty unreachable block after the INSN. */
|
| bb = create_basic_block (NEXT_INSN (insn), NULL_RTX, last_bb);
|
| -
|
| +
|
| /* split_edge () creates BB before E->DEST. Keep in mind, that
|
| this operation extends scheduling region till the end of BB.
|
| Hence, we need to shift NEXT_TAIL, so haifa-sched.c won't go out
|
| @@ -286,6 +286,7 @@ static struct haifa_sched_info ebb_sched_info =
|
| rank,
|
| ebb_print_insn,
|
| ebb_contributes_to_priority,
|
| + NULL, /* insn_finishes_block_p */
|
|
|
| NULL, NULL,
|
| NULL, NULL,
|
| @@ -326,7 +327,7 @@ earliest_block_with_similiar_load (basic_block last_block, rtx load_insn)
|
| {
|
| rtx insn1 = DEP_PRO (back_dep);
|
|
|
| - if (DEP_TYPE (back_dep) == REG_DEP_TRUE)
|
| + if (DEP_TYPE (back_dep) == REG_DEP_TRUE)
|
| /* Found a DEF-USE dependence (insn1, load_insn). */
|
| {
|
| sd_iterator_def fore_sd_it;
|
| @@ -462,8 +463,8 @@ static basic_block
|
| schedule_ebb (rtx head, rtx tail)
|
| {
|
| basic_block first_bb, target_bb;
|
| - struct deps tmp_deps;
|
| -
|
| + struct deps_desc tmp_deps;
|
| +
|
| first_bb = BLOCK_FOR_INSN (head);
|
| last_bb = BLOCK_FOR_INSN (tail);
|
|
|
| @@ -477,7 +478,7 @@ schedule_ebb (rtx head, rtx tail)
|
| init_deps_global ();
|
|
|
| /* Compute dependencies. */
|
| - init_deps (&tmp_deps);
|
| + init_deps (&tmp_deps, false);
|
| sched_analyze (&tmp_deps, head, tail);
|
| free_deps (&tmp_deps);
|
|
|
| @@ -490,7 +491,7 @@ schedule_ebb (rtx head, rtx tail)
|
| }
|
| else
|
| /* Only recovery blocks can have their dependencies already calculated,
|
| - and they always are single block ebbs. */
|
| + and they always are single block ebbs. */
|
| gcc_assert (first_bb == last_bb);
|
|
|
| /* Set priorities. */
|
| @@ -515,7 +516,7 @@ schedule_ebb (rtx head, rtx tail)
|
|
|
| /* We might pack all instructions into fewer blocks,
|
| so we may made some of them empty. Can't assert (b == last_bb). */
|
| -
|
| +
|
| /* Sanity check: verify that all region insns were scheduled. */
|
| gcc_assert (sched_rgn_n_insns == rgn_n_insns);
|
|
|
| @@ -606,9 +607,9 @@ schedule_ebbs (void)
|
| a note or two. */
|
| while (head != tail)
|
| {
|
| - if (NOTE_P (head))
|
| + if (NOTE_P (head) || BOUNDARY_DEBUG_INSN_P (head))
|
| head = NEXT_INSN (head);
|
| - else if (NOTE_P (tail))
|
| + else if (NOTE_P (tail) || BOUNDARY_DEBUG_INSN_P (tail))
|
| tail = PREV_INSN (tail);
|
| else if (LABEL_P (head))
|
| head = NEXT_INSN (head);
|
| @@ -642,7 +643,7 @@ ebb_add_remove_insn (rtx insn ATTRIBUTE_UNUSED, int remove_p)
|
| static void
|
| ebb_add_block (basic_block bb, basic_block after)
|
| {
|
| - /* Recovery blocks are always bounded by BARRIERS,
|
| + /* Recovery blocks are always bounded by BARRIERS,
|
| therefore, they always form single block EBB,
|
| therefore, we can use rec->index to identify such EBBs. */
|
| if (after == EXIT_BLOCK_PTR)
|
|
|