This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: DFA scheduler buglet
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: law at redhat dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Wed, 17 Apr 2002 13:12:59 -0400
- Subject: Re: DFA scheduler buglet
- References: <23178.1019062781@porcupine.cygnus.com>
law@redhat.com wrote:
>
> In message <3CBD9CFD.42DFC400@redhat.com>, Vladimir Makarov writes:
> > Jeff, I've looked at the code and not found the path on which the
> > state is changed but the insn is not issued. The state is changed only
> > if state_transition returns negative value. Zero means that the insn
> > can be issued on the current cycle but not in the current state.
> > Typical example is IA64, when we've just started the new cycle and want
> > to issue an integer insn. Because all templates in IA64 start with M (a
> > memory insn) or B (a branch), we still can issue the integer insn if we
> > issue nop.m the first. The old scheduler can not distinguish such
> > situations, zero cost means that the insn could be issued right now.
> >
> > Although I am agree that the code is a bit complicated and we could
> > simplify it by usage of the temporary state. We could improve it after
> > merging the branch.
> Look more closely. In particular consider the case where state_transition
> returns a negative value, but can_schedule_ready_p returns a zero value.
>
Sorry. I see now. The problem really occurs in some interblock moves.
Thanks, Jeff. I'll make a patch for it.
Vlad