OSDN Git Service

(divsi3): Correct logic for when we call force_reg.
[pf3gnuchains/gcc-fork.git] / gcc / config / rs6000 / rs6000.md
index bd8fc6b..72957ae 100644 (file)
   if (GET_CODE (operands[2]) == CONST_INT
       && exact_log2 (INTVAL (operands[2])) >= 0)
     ;
-
   else if (! TARGET_POWERPC)
     FAIL;
-
-  operands[2] = force_reg (SImode, operands[2]);
+  else
+    operands[2] = force_reg (SImode, operands[2]);
 }")
 
 (define_expand "modsi3"
   [(use (match_operand:SI 0 "gpc_reg_operand" ""))
    (use (match_operand:SI 1 "gpc_reg_operand" ""))
-   (use (match_operand:SI 2 "const_int_operand" ""))]
+   (use (match_operand:SI 2 "reg_or_cint_operand" ""))]
   ""
   "
 {
   rtx temp1;
   rtx temp2;
 
-  if (i < 0)
+  if (GET_CODE (operands[2]) != CONST_INT || i < 0)
     FAIL;
 
   temp1 = gen_reg_rtx (SImode);