+2004-06-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/15653
+ * haifa-sched.c (schedule_block): Finish cycle after issuing asm
+ insn.
+
2004-06-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR web/15263
{
rtx insn;
int cost;
+ bool asm_p = false;
if (sched_verbose >= 2)
{
memcpy (temp_state, curr_state, dfa_state_size);
if (recog_memoized (insn) < 0)
{
- if (!first_cycle_insn_p
- && (GET_CODE (PATTERN (insn)) == ASM_INPUT
- || asm_noperands (PATTERN (insn)) >= 0))
+ asm_p = (GET_CODE (PATTERN (insn)) == ASM_INPUT
+ || asm_noperands (PATTERN (insn)) >= 0);
+ if (!first_cycle_insn_p && asm_p)
/* This is asm insn which is tryed to be issued on the
cycle not first. Issue it on the next cycle. */
cost = 1;
can_issue_more--;
advance = schedule_insn (insn, &ready, clock_var);
+
+ /* After issuing an asm insn we should start a new cycle. */
+ if (advance == 0 && asm_p)
+ advance = 1;
if (advance != 0)
break;