Hi Jeff,

On 8/7/23 13:36, Jeff Law wrote:

This test is too aggressive.  Constants have VOIDmode, so we need to let the through this phase of conditional move support.

Fixes several missed conditional moves with the trunk.

Committed to the trunk,

As discussed this morning, this triggers an ICE when building glibc for rv64_zicond

programs/ld-ctype.c:3977:1: error: unrecognizable insn:
 3977 | }
      | ^
(insn 238 237 239 18 (set (reg:SI 727)
        (if_then_else:SI (eq:SI (reg:SI 725)
                (const_int 0 [0]))
            (const_int 0 [0])
            (reg:SI 721))) -1
     (nil))
during RTL pass: vregs
programs/ld-ctype.c:3977:1: internal compiler error: in extract_insn, at recog.cc:2791 0x885de7 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)     ../.././gcc/gcc/rtl-error.cc:108 0x885e09 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)    ../.././gcc/gcc/rtl-error.cc:116
0x8846f9 extract_insn(rtx_insn*)    ../.././gcc/gcc/recog.cc:2791
0xcf77ae instantiate_virtual_regs_in_insn ../.././gcc/gcc/function.cc:1610
0xcf77ae instantiate_virtual_regs ../.././gcc/gcc/function.cc:1983
0xcf77ae execute    ../.././gcc/gcc/function.cc:2030

Here's the reduced reproducer.

a, c;
long b;
d() {
  for (;;)
    if (a & (b < 8 ?: 1 << b))
      c = 1;
}

I'll try to muster a fix :-)

Thx,
-Vineet

Reply via email to