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