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 <[email protected]>
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