On 11/25/13 12:16, Wei Mi wrote:

I'll note you're doing an extra pass over all the RTL here.   Is there any
clean way you can clean SCHED_GROUP_P without that extra pass over the RTL?
Perhaps when the group actually gets scheduled?

jeff


With your help to understand that sched group will not be broken by
other passes in other cases, I can cleanup SCHED_GROUP_P for
macrofusion only by checking every condjump insn which is at the end
of BB. Then the cost will be in the same scale with bb nums. Do you
think it is ok?

Thanks,
Wei.

2013-11-25  Wei Mi  <w...@google.com>

         PR rtl-optimization/59020
         * haifa-sched.c (cleanup_sched_group): New function.
         (sched_finish): Call cleanup_sched_group to cleanup SCHED_GROUP_P.

2013-11-25  Wei Mi  <w...@google.com>
         PR rtl-optimization/59020
         * testsuite/gcc.dg/pr59020.c (void f):
But there's nothing that requires the SCHED_GROUP_P to be at the end of a block. The cc0-setter/cc0-user case was just an example. Another example would be groups created around call insns on small register class machines.

ISTM that when an insn moves from the ready list to back to the main insn chain, that you can just clear SCHED_GROUP_P at that time. Is that not the case?

jeff

Reply via email to