https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104154

--- Comment #7 from rdapp at linux dot ibm.com ---
This

diff --git a/gcc/config/arc/arc.cc b/gcc/config/arc/arc.cc
index 8cc173519ab..e9ea90631a2 100644
--- a/gcc/config/arc/arc.cc
+++ b/gcc/config/arc/arc.cc
@@ -2254,6 +2254,8 @@ gen_compare_reg (rtx comparison, machine_mode omode)


   cmode = GET_MODE (x);
+  if (GET_MODE_CLASS (cmode) == MODE_CC)
+    return comparison;
   if (cmode == VOIDmode)
     cmode = GET_MODE (y);
   gcc_assert (cmode == SImode || cmode == SFmode || cmode == DFmode);

should be better and fixes the test case for me.

Btw Segher is very much not in favor of this approach/patch and argues that
reusing the comparison is the wrong thing to do as a "cc comparison" is not a
comparison but rather the result of a comparison (PR104335).

Reply via email to