https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122656
--- Comment #3 from Robin Dapp <rdapp at gcc dot gnu.org> --- (In reply to Jeffrey A. Law from comment #2) > So it appears we're adding too many arguments to the insn when generating > the vlseg2e32ff_v_i32mf2x2 intrinsic in use_exact_insn. > > With one too many args added early in that function we get here: > > /* The RVV floating-point only support dynamic rounding mode in the > FRM register. */ > if (opno != insn_data[icode].n_generator_args) > add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode)); > > return generate_insn (icode); > > Since we added one too many args, we add *another*, resulting in two too > many arguments. Then we eventually fault in generate_insn or one of its > children. > > I didn't see any of the fault-on-first vlseg insns getting tested by the > testsuite. So I guess it's possible this has simply been broken all along. Yes, highly likely.
