https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114639
--- Comment #10 from Li Pan <pan2.li at intel dot com> --- The #define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN) of the riscv backend doesn't honor vector mode. Then the below part 370 ................ if (!targetm.calls.function_value_regno_p (copy_start)) 371 ................ copy_num = 0; 372 ................ else 373 ................ copy_num = hard_regno_nregs (copy_start, 374 ................................................ GET_MODE (copy_reg)); will have copy_num == 0 and then went to a different code path. Let me run fully riscv regression test for this fix first.