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

Reply via email to