parent
703cf2116b
commit
1ad72cef6d
|
@ -12,6 +12,9 @@
|
||||||
(do_spill, do_restore): Use it to add REG_INC note.
|
(do_spill, do_restore): Use it to add REG_INC note.
|
||||||
* config/ia64/ia64.md (movti_internal): Add REG_INC notes as needed.
|
* config/ia64/ia64.md (movti_internal): Add REG_INC notes as needed.
|
||||||
|
|
||||||
|
* config/ia64/ia64.c (ia64_sched_reorder): Defer scheduling of
|
||||||
|
asms if other insns are available.
|
||||||
|
|
||||||
2001-08-04 Hans-Peter Nilsson <hp@bitrange.com>
|
2001-08-04 Hans-Peter Nilsson <hp@bitrange.com>
|
||||||
|
|
||||||
* config/sh/sh.c (sh_asm_named_section): Fix typo in align
|
* config/sh/sh.c (sh_asm_named_section): Fix typo in align
|
||||||
|
|
|
@ -5982,10 +5982,10 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready,
|
||||||
int *pn_ready;
|
int *pn_ready;
|
||||||
int reorder_type, clock_var;
|
int reorder_type, clock_var;
|
||||||
{
|
{
|
||||||
|
int n_asms;
|
||||||
int n_ready = *pn_ready;
|
int n_ready = *pn_ready;
|
||||||
rtx *e_ready = ready + n_ready;
|
rtx *e_ready = ready + n_ready;
|
||||||
rtx *insnp;
|
rtx *insnp;
|
||||||
rtx highest;
|
|
||||||
|
|
||||||
if (sched_verbose)
|
if (sched_verbose)
|
||||||
{
|
{
|
||||||
|
@ -6029,7 +6029,7 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready,
|
||||||
maybe_rotate (sched_verbose ? dump : NULL);
|
maybe_rotate (sched_verbose ? dump : NULL);
|
||||||
|
|
||||||
/* First, move all USEs, CLOBBERs and other crud out of the way. */
|
/* First, move all USEs, CLOBBERs and other crud out of the way. */
|
||||||
highest = ready[n_ready - 1];
|
n_asms = 0;
|
||||||
for (insnp = ready; insnp < e_ready; insnp++)
|
for (insnp = ready; insnp < e_ready; insnp++)
|
||||||
if (insnp < e_ready)
|
if (insnp < e_ready)
|
||||||
{
|
{
|
||||||
|
@ -6037,7 +6037,17 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready,
|
||||||
enum attr_type t = ia64_safe_type (insn);
|
enum attr_type t = ia64_safe_type (insn);
|
||||||
if (t == TYPE_UNKNOWN)
|
if (t == TYPE_UNKNOWN)
|
||||||
{
|
{
|
||||||
highest = ready[n_ready - 1];
|
if (GET_CODE (PATTERN (insn)) == ASM_INPUT
|
||||||
|
|| asm_noperands (PATTERN (insn)) >= 0)
|
||||||
|
{
|
||||||
|
rtx lowest = ready[0];
|
||||||
|
ready[0] = insn;
|
||||||
|
*insnp = lowest;
|
||||||
|
n_asms++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rtx highest = ready[n_ready - 1];
|
||||||
ready[n_ready - 1] = insn;
|
ready[n_ready - 1] = insn;
|
||||||
*insnp = highest;
|
*insnp = highest;
|
||||||
if (ia64_final_schedule && group_barrier_needed_p (insn))
|
if (ia64_final_schedule && group_barrier_needed_p (insn))
|
||||||
|
@ -6046,15 +6056,23 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready,
|
||||||
sched_data.last_was_stop = 1;
|
sched_data.last_was_stop = 1;
|
||||||
maybe_rotate (sched_verbose ? dump : NULL);
|
maybe_rotate (sched_verbose ? dump : NULL);
|
||||||
}
|
}
|
||||||
else if (GET_CODE (PATTERN (insn)) == ASM_INPUT
|
|
||||||
|| asm_noperands (PATTERN (insn)) >= 0)
|
|
||||||
{
|
|
||||||
/* It must be an asm of some kind. */
|
|
||||||
cycle_end_fill_slots (sched_verbose ? dump : NULL);
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (n_asms < n_ready)
|
||||||
|
{
|
||||||
|
/* Some normal insns to process. Skip the asms. */
|
||||||
|
ready += n_asms;
|
||||||
|
n_ready -= n_asms;
|
||||||
|
}
|
||||||
|
else if (n_ready > 0)
|
||||||
|
{
|
||||||
|
/* Only asm insns left. */
|
||||||
|
cycle_end_fill_slots (sched_verbose ? dump : NULL);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (ia64_final_schedule)
|
if (ia64_final_schedule)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue