define_split
Andrew Stubbs
andrew.stubbs@gmail.com
Wed Nov 10 12:01:00 GMT 2010
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
More information about the Gcc
mailing list