https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92845
--- Comment #1 from Claudiu Zissulescu <claziss at gmail dot com> --- Although the FDCMP (the double precision floating point compare instruction) is added to the compiler, it is not properly used via cstoredi pattern. A patch can be this one: index b592f25afce..bd44030b409 100644 --- a/gcc/config/arc/arc.md +++ b/gcc/config/arc/arc.md @@ -3749,7 +3749,7 @@ archs4x, archs4xd" }) (define_mode_iterator SDF [(SF "TARGET_FP_SP_BASE || TARGET_OPTFPE") - (DF "TARGET_OPTFPE")]) + (DF "TARGET_FP_DP_BASE || TARGET_OPTFPE")]) (define_expand "cstore<mode>4" [(set (reg:CC CC_REG) @@ -3759,7 +3759,7 @@ archs4x, archs4xd" (match_operator:SI 1 "comparison_operator" [(reg CC_REG) (const_int 0)]))] - "TARGET_FP_SP_BASE || TARGET_OPTFPE" + "TARGET_HARD_FLOAT || TARGET_OPTFPE" { gcc_assert (XEXP (operands[1], 0) == operands[2]); gcc_assert (XEXP (operands[1], 1) == operands[3]);