On 8/8/23 11:21, Vineet Gupta wrote:
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 :-)
Should be fixed now, with a regression test in the suite.
Thanks,
jeff