On Mon, Nov 25, 2013 at 2:12 PM, Jeff Law <law@redhat.com> wrote:
Doing the cleanup at the end of BB could ensure all the groups
inserted for macrofusion will be cleaned. For groups not at the end of
a block, no matter whether they are cleaned up or not, nothing will
happen because other passes will not mess up those groups -- you said
cc0-setter/cc0-user was such a case. Is it call group a different
case?
True, it would be safe, but it seems inconsistent and confusing that some
SCHED_GROUP_P references would be purged and others remain.
Given SCHED_GROUP_P is to used strictly in the scheduler ISTM that we should
be wiping it as we leave and that our RTL checkers ought to be verifying
there are no insns with SCHED_GROUP_P left on.
How about add a verifier TODO_verify_sched_group_flag similar as
TODO_verify_rtl_sharing, and add the verifier in the todo lists of all
the scheduling passes.
For sched1 and sched2, we can do that. Actually, I find it has been
done in move_insn when commit_schedule. But for modulo scheduling, I
havn't found a good place to do it.
Well, that's where I'd suggest focusing attention.
jeff
After looking it carefully, even for sched1 and sched2, it is not ok
to depend on move_insn in commit_schedule to clean up all the
SCHED_GROUP_P, suppose a block is decided not to be scheduled by
dbg_cnt, then SCHED_GROUP_P inside the block will not be cleaned.
It is even more difficult to find a place inside SMS scheduling to do
the cleanup.
Any suggestions?