https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69459
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Uroš Bizjak from comment #5) > (In reply to Jakub Jelinek from comment #4) > > > I'd say the i386 backend just should add a new constraint for CONST0_RTX > > only and use it wherever the all ones is not allowed. As "C" is documented, > > probably the new "BC" constraint should be const0/CONST0_RTX only, and I > > think at least the vector_move_operand, reg_or_0_operand and likely the > > const_int_operand cases too should be changed to "BC". At least that way > > the RA and other spots will not try to satisfy it with something that can't > > match. > > Yes, let's go this way. Ok, will work on it tomorrow. > > > And then there is the question if and what should change on the LRA side. > > IMO, to avoid issues like this, ICE with unrecognized insn should be > triggered when operand satisfies constraint, but not predicate. If I manually set INSN_CODE to -1 when recog in lra fails, I get the ICE later on.