http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58048
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- Looking a bit into this problem: A reload reg is inserted before "fscale" asm, but the chosen alternative can move an immediate to memory directly. Inserting insn reload before: 227: r184:SI=0x20 alt=0,overall=13,losers=2,rld_nregs=1 alt=1,overall=9,losers=1,rld_nregs=0 alt=4,overall=19,losers=2 -- reject alt=10,overall=19,losers=2 -- reject Choosing alt 1 in insn 227: (0) m (1) re {*movsi_internal} Creating newreg=185 from oldreg=184, assigning class NO_REGS to r185 227: r185:SI=0x20 Inserting insn reload after: The alternative does not need a register, so class NO_REGS is correct. However, it looks that follow-up code is not prepared for this and trips into a loop, trying to assign another reload reg.