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

Patrick O'Neill <patrick at rivosinc dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[14] RISC-V vector: Appears |[14] RISC-V vector:
                   |to be overwriting stack arg |vsetivli clobbers variable
                   |                            |value

--- Comment #1 from Patrick O'Neill <patrick at rivosinc dot com> ---
lw      a5,%lo(b)(a3)
load the value of b (100) into a5

vsetivli        a5,5,e32,m1,ta,ma
clobbers the a5 regsiter which previously held b

addiw   a1,a5,1
a5 is treated as b (this is the b++ statement)

sw      a1,%lo(b)(a3)
and a1 (a5+1) is stored to b.

It appears like the compiler doesn't realize that vsetivli clobbers a5.

Reply via email to