https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115949

--- Comment #4 from Oleg Endo <olegendo at gcc dot gnu.org> ---
The issue seems to be that the 'movsi_ie' pattern allows 'mem(reg+disp) <->
fp-reg' load/stores through the predicates 'general_movdst_operand' and
'general_movsrc_operand' but then disallows it via the constraints.

I guess once the whole thing arrives at this impossible operand combination, it
has cornered itself -- it would require another register to compute the 'stack
(r15) + offset' address, which it doesn't have.

Perhaps it would be better to split out the FP-regs related things from the
movsi_ie pattern.

Another questionable point is why RA decides to use an FP reg for an SImode
variable.  The resulting code will be probably just terrible.

Reply via email to