Constrain not satisfied - floating point insns.
Jim Wilson
wilson@specifix.com
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, http://www.specifix.com
More information about the Gcc
mailing list