https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102154
--- Comment #11 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Hongtao.liu from comment #10) > (In reply to Hongtao.liu from comment #9) > > > > > > (define_insn "movsf_hardfloat" > > > [(set (match_operand:SF 0 "nonimmediate_operand" > > > "=!r, f, v, wa, m, wY, > > > Z, m, wa, !r, f, wa, > > > !r, *c*l, !r, *h") > > > (match_operand:SF 1 "input_operand" > > > "m, m, wY, Z, f, v, > > > wa, r, j, j, f, wa, > > > r, r, *h, 0"))] > > > "(register_operand (operands[0], SFmode) > > > || register_operand (operands[1], SFmode)) > > > && TARGET_HARD_FLOAT > > > && (TARGET_ALLOW_SF_SUBREG > > > || valid_sf_si_move (operands[0], operands[1], SFmode))" > > > > > > Oh, The pattern disllow sf subreg. > > > > Here TARGET_ALLOW_SF_SUBREG || valid_sf_si_move (operands[0], operands[1], > > SFmode) is false, others are true which means input_operand accept > > (subreg:SF (reg:DI 4)) > > And w/ -mpower10 (subreg:SF (reg:DI 4) 0) can be handled by reload to > typo should be (subreg:SF (reg:DI) 4)