--- gcc/config/romp.c 2018/04/24 17:51:34 1.1.1.1 +++ gcc/config/romp.c 2018/04/24 17:59:23 1.1.1.3 @@ -613,7 +613,7 @@ float_unary (op, mode) && GET_MODE (XEXP (op, 0)) == GET_MODE (op); } -/* Return 1 if this is a valid floating-point converstion that can be done +/* Return 1 if this is a valid floating-point conversion that can be done as part of an operation by the RT floating-point routines. */ int @@ -929,7 +929,7 @@ print_operand (file, x, code) break; case '.': - /* Output nothing. Used as delimeter in, e.g., "mc%B1%.3 " */ + /* Output nothing. Used as delimiter in, e.g., "mc%B1%.3 " */ break; case '#': @@ -1413,12 +1413,12 @@ output_fpop (code, op0, op1, op2, insn) } /* If the first and second operands are the same, merge them. Don't do this - for SFmode in general registers because this triggers a bug in the RT fp - code. */ + for SFmode or SImode in general registers because this triggers a bug in + the RT fp code. */ if (op1 && rtx_equal_p (op0, op1) && code != EQ && code != GE && code != SET - && (GET_MODE (op1) != SFmode || GET_CODE (op0) != REG - || FP_REGNO_P (REGNO (op0)))) + && ((GET_MODE (op1) != SFmode && GET_MODE (op1) != SImode) + || GET_CODE (op0) != REG || FP_REGNO_P (REGNO (op0)))) { op1 = op2; op2 = 0;