https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97715
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- ;; Floating-point register constraints. (define_register_constraint "f" "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS" "Any 80387 floating-point (stack) register.") So, zero_all_st_registers really should just if (!TARGET_80387 && !TARGET_FLOAT_RETURNS_IN_80387) return false; somewhere early.