On 09/11/10 22:54, Michael Meissner wrote:
The split pass would then break this back into three insns:

        (insn ... (set (reg:SF ACC_REGISTER)
                       (mult:SF (reg:SF 124)
                                (reg:SF 125))))

        (insn ... (set (reg:SF ACC_REGISTER)
                       (plus:SF (reg:SF ACC_REGISTER)
                                (reg:SF 127))))

        (insn ... (set (reg:SF 126)
                       (reg:SF ACC_REGISTER)))

Now, if you just had the split and no define_insn, combine would try and form
the (plus (mult ...)) and not find an insn to match, so while it had the
temporary insn created, it would try to immediately split the insn, so at the
end of the combine pass, you would have:

        (insn ... (set (reg:SF ACC_REGISTER)
                       (mult:SF (reg:SF 124)
                                (reg:SF 125))))

        (insn ... (set (reg:SF ACC_REGISTER)
                       (plus:SF (reg:SF ACC_REGISTER)
                                (reg:SF 127))))

        (insn ... (set (reg:SF 126)
                       (reg:SF ACC_REGISTER)))

I'm trying to follow this example for my own education, but these two example results appear to be identical.

Presumably this isn't deliberate?

Andrew

Reply via email to