https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111621
Bug ID: 111621
Summary: [RISC-V] Bad register allocation in vadd.vi may cause
operational error
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: mumuxi_ll at outlook dot com
Target Milestone: ---
Hi;
My source code can be fond at https://godbolt.org/z/8v9Wxx9Yf.
The porblem is that when compiling with -O2/-O3, vadd.vi will allocate a
different register for vd compared to vs2, then the actual operation will only
update the first data in vd instead of all. In cases such as -O0, vadd.vi will
allocate the same registers to vd and vs2, and all vd values will be refreshed
after execution.
Thanks!