http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58158
--- Comment #7 from Aaro Koskinen <aaro.koskinen at iki dot fi> --- Loongson 2F is MIPS III + movz/movn only. I am currently running my compiler with the below workaround, and it seems to help: --- gcc-4.8.1.orig/gcc/config/mips/mips.md 2013-02-25 15:53:16.000000000 +0200 +++ gcc-4.8.1/gcc/config/mips/mips.md 2013-08-23 23:09:13.000000000 +0300 @@ -6708,20 +6708,23 @@ ;; These are the main define_expand's used to make conditional moves. (define_expand "mov<mode>cc" [(set (match_dup 4) (match_operand 1 "comparison_operator")) (set (match_operand:GPR 0 "register_operand") (if_then_else:GPR (match_dup 5) (match_operand:GPR 2 "reg_or_0_operand") (match_operand:GPR 3 "reg_or_0_operand")))] "ISA_HAS_CONDMOVE" { + if (!ISA_HAS_FP_CONDMOVE && + GET_MODE_CLASS (GET_MODE (XEXP (operands[1], 0))) != MODE_INT) + FAIL; mips_expand_conditional_move (operands); DONE; }) (define_expand "mov<mode>cc" [(set (match_dup 4) (match_operand 1 "comparison_operator")) (set (match_operand:SCALARF 0 "register_operand") (if_then_else:SCALARF (match_dup 5) (match_operand:SCALARF 2 "register_operand") (match_operand:SCALARF 3 "register_operand")))]