On 02/11/14 02:06, Eric Botcazou wrote:
I pondered changing the condition for swapping the insn order, but it
didn't seem worth it. I doubt we see many 3->2 combinations where I3 is
a JUMP_INSN, the result turns into two simple sets and the insn swapping
code you wrote decides it needs to swap the insns.
I didn't actually write it, just enhanced it recently, that's why I suggested
to do the same here. It's one line of code and we have an example of valid
simplification at hand so I think we ought to do it.
It seems to me that as long as we're re-using the existing insns to
contain the simple sets that we have to ensure that they're INSNs, not
CALL_INSNs or JUMP_INSNs.
I disagree, nullifying JUMP_INSNs by changing them to (set (pc) (pc)) is a
standard method in the combiner.
Right, but most of the time we're doing a 2->1 or 3->1 that turns the
conditional jump into a nop -- at which point all we do is modify I3
(which is the conditional jump) into a nop-jump. That common case
shouldn't be affected by my change.
It's only when we have a 3->2 or 4->2 combination where one of the
earlier insns has a side effect we need to keep and we're able to
simplify the conditional into a NOP that would be affected by my change.
And I suspect that is much more rare.
Regardless, I'll see what I can do.
THanks,
Jeff