This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: DFA scheduler buglet


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]