sched-rgn.c (new_ready): Check if instruction can be speculatively scheduled before attempting speculation.

* sched-rgn.c (new_ready): Check if instruction can be
	speculatively scheduled before attempting speculation.
	(debug_rgn_dependencies): Remove wrongful assert.

From-SVN: r138757
This commit is contained in:
Maxim Kuvyrkov 2008-08-06 06:20:02 +00:00 committed by Maxim Kuvyrkov
parent 0f67bdf1cd
commit 07da1cfcf6
2 changed files with 21 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2008-08-06 Maxim Kuvyrkov <maxim@codesourcery.com>
* sched-rgn.c (new_ready): Check if instruction can be
speculatively scheduled before attempting speculation.
(debug_rgn_dependencies): Remove wrongful assert.
2008-08-05 Bob Wilson <bob.wilson@acm.org>
* config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.

View file

@ -2108,9 +2108,22 @@ new_ready (rtx next, ds_t ts)
But we possibly can handle that with control speculation. */
&& (current_sched_info->flags & DO_SPECULATION)
&& (spec_info->mask & BEGIN_CONTROL))
/* Here we got new control-speculative instruction. */
ts = set_dep_weak (ts, BEGIN_CONTROL, MAX_DEP_WEAK);
{
ds_t new_ds;
/* Add control speculation to NEXT's dependency type. */
new_ds = set_dep_weak (ts, BEGIN_CONTROL, MAX_DEP_WEAK);
/* Check if NEXT can be speculated with new dependency type. */
if (sched_insn_is_legitimate_for_speculation_p (next, new_ds))
/* Here we got new control-speculative instruction. */
ts = new_ds;
else
/* NEXT isn't ready yet. */
ts = (ts & ~SPECULATIVE) | HARD_DEP;
}
else
/* NEXT isn't ready yet. */
ts = (ts & ~SPECULATIVE) | HARD_DEP;
}
}
@ -2584,7 +2597,6 @@ debug_rgn_dependencies (int from_bb)
{
rtx head, tail;
gcc_assert (EBB_FIRST_BB (bb) == EBB_LAST_BB (bb));
get_ebb_head_tail (EBB_FIRST_BB (bb), EBB_LAST_BB (bb), &head, &tail);
fprintf (sched_dump, "\n;; --- Region Dependences --- b %d bb %d \n",
BB_TO_BLOCK (bb), bb);