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

Jeffrey A. Law <law at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kito at gcc dot gnu.org,
                   |                            |rdapp at gcc dot gnu.org

--- Comment #2 from Jeffrey A. Law <law at gcc dot gnu.org> ---
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.

Reply via email to