On Thursday 30 June 2005 11:32, Richard Earnshaw wrote: > Hmm, certainly looks suspicious, but it's not really what the original > bug report was about. This might be some interblock scheduling problem > that is also triggered by the extra scheduling freedom we get with the > disabled change.
Hmm, right, but both related to COND_EXECs. Looks very broken ;-) > I think the way to handle that is to push the 'left-over' insns onto the > fall-through edge and then create a new BB for them. If there is no > code label after the fall-through, then the new BB can be coalesced with > the fall-through block, otherwise it will become a new BB in its own > right. It might even be possible to remove the predication on the > instructions if they all use the same predicate register and the > condition is the inverse of the branch condition. Well, if I understand correctly, there is normally no interblock scheduling after reload. IA-64 is just special (as usual), but even then, the scheduler is not really even aware of basic blocks at all. For your problem, I think the jump should just be forced somehow to be the last insn in the block. You can't move things into other basic blocks if you are not doing interblock scheduling, after all. For the PR I was looking at, someone who actually understands the scheduler will have to figure out a fix :-/ Gr. Steven