------- Comment #10 from steven at gcc dot gnu dot org 2008-01-18 17:14 ------- The problem is IMHO in the div<mode>3 define_expand in mips.md:
(define_expand "div<mode>3" [(set (match_operand:ANYF 0 "register_operand") (div:ANYF (match_operand:ANYF 1 "reg_or_1_operand") (match_operand:ANYF 2 "register_operand")))] "<divide_condition>" { if (const_1_operand (operands[1], <MODE>mode)) if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations)) operands[1] = force_reg (<MODE>mode, operands[1]); }) If SB1 can't handle CONST1_RTX in operand 1, then the expander shouldn't generate an insn like that for it. So either the define_expand is wrong, or there is a mismatch between this and a define_insn (at least, AFAIU -- not being a MIPS guru and a below-par back-end hacker ;-) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34831