Constrain not satisfied - floating point insns.

Jim Wilson
Thu Mar 15 19:08:00 GMT 2007

Dave Korn wrote:
>   But it is ok to use a define_expand (that accepts all alternatives) for
> movsf and use that to generate one of several movsf_XXXX insns, isn't it?

No.  You have to have a single movsf insn that accepts all constraints.

reload knows that it can fix practically anything by emitting a move 
insn to move an operand into a reg or mem.

However, you can't fix a move insn by emitting yet another move insn. 
That doesn't actually fix anything.  That just moves the same problem to 
the new move insn.  So the rules are different for move insns.  You have 
to have a single pattern that accepts all alternatives that might be 
generated by reload.

If you want to be pedantic, you can actually have multiple movsf 
patterns if you have operands that can't be generated by reload.  For 
instance if you have EXTRA_CONSTRAINTS R, S, and T, then you could have 
3 patterns one which accepts R and all usual operand combinations, one 
which accepts S and all usual operand combinations, and one which 
accepts T and all usual operand combinations.  Doing that would be 
pointless though.  You would be much better off just having the one 
pattern that accepts R, S, T and the usual operand combinations.
Jim Wilson, GNU Tools Support,

More information about the Gcc mailing list