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.

Reply via email to