Hello! The mode of clobbers was changed from QImode to reg_raw_mode from a long time ago...
2018-09-11 Uros Bizjak <ubiz...@gmail.com> * reg-stack.c (subst_asm_stack_regs): Call replace_reg also for clobbers. Remove obsolete comment. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Committed to mainline SVN as obvious. Uros.
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 0f1b6d52f01..d97a358e3f8 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -2275,13 +2275,7 @@ subst_asm_stack_regs (rtx_insn *insn, stack_ptr regstack) int regnum = get_hard_regnum (regstack, clobber_reg[i]); if (regnum >= 0) - { - /* Sigh - clobbers always have QImode. But replace_reg knows - that these regs can't be MODE_INT and will assert. Just put - the right reg there without calling replace_reg. */ - - *clobber_loc[i] = FP_MODE_REG (regnum, DFmode); - } + replace_reg (clobber_loc[i], regnum); } /* Now remove from REGSTACK any inputs that the asm implicitly popped. */