Hi,

I figured I'd just go ahead and post this patch as well since it seems
to have fixed the arc build problems.

It would be nice if someone could bootstrap/regtest if Jeff hasn't
already done so.  I was able to verify that the two testcases attached
to the PR build cleanly but not much more.  Thank you.

Regards
 Robin

--

        PR104154

gcc/ChangeLog:

        * config/arc/arc.cc (gen_compare_reg):  Return the CC-mode
        comparison ifcvt passed us.

---

>From fa98a40abd55e3a10653f6a8c5b2414a2025103b Mon Sep 17 00:00:00 2001
From: Robin Dapp <rd...@linux.ibm.com>
Date: Mon, 7 Feb 2022 08:39:41 +0100
Subject: [PATCH] arc: Fix for new ifcvt behavior [PR104154]

ifcvt now passes a CC-mode "comparison" to backends.  This patch
simply returns from gen_compare_reg () in that case since nothing
needs to be prepared anymore.

        PR104154

gcc/ChangeLog:

        * config/arc/arc.cc (gen_compare_reg):  Return the CC-mode
        comparison ifcvt passed us.
---
 gcc/config/arc/arc.cc | 6 ++++++
 1 file changed, 6 insertions(+)

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


   cmode = GET_MODE (x);
+
+  /* If ifcvt passed us a MODE_CC comparison we can
+     just return it.  It should be in the proper form already.   */
+  if (GET_MODE_CLASS (cmode) == MODE_CC)
+    return comparison;
+
   if (cmode == VOIDmode)
     cmode = GET_MODE (y);
   gcc_assert (cmode == SImode || cmode == SFmode || cmode == DFmode);
-- 
2.31.1

Reply via email to