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