[Bug rtl-optimization/104154] [12 Regression] Another ICE due to recent ifcvt changes

rdapp at linux dot ibm.com gcc-bugzilla@gcc.gnu.org
Mon Feb 7 08:18:05 GMT 2022


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

--- Comment #2 from rdapp at linux dot ibm.com ---
Yes, your guess was right again. We ICE here:

gcc_assert (cmode == SImode || cmode == SFmode || cmode == DFmode);

but cmode == E_CCmode with the patch.

This already helps and the resulting sequences are less expensive:

diff --git a/gcc/config/arc/arc.cc b/gcc/config/arc/arc.cc
index 8cc173519ab..d802c45f9af 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 (cmode == CCmode)
+    return comparison;
   if (cmode == VOIDmode)
     cmode = GET_MODE (y);
   gcc_assert (cmode == SImode || cmode == SFmode || cmode == DFmode);

As we are trying to ifcvt very long sequences (5+ insns) the overall outcome
does not change, though.


More information about the Gcc-bugs mailing list