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")))]

Reply via email to