https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121018
Bug ID: 121018 Summary: RVV codegen: spills unused vector registers on function call between RVV intrinsics Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: camel-cdr at protonmail dot com Target Milestone: --- The code snippet: #include <riscv_vector.h> extern int foo(void); vuint8m1_t bar(vuint8m1_t x) { foo(); return x; } causes gcc to spill vector registers v0-v8, v24-v31 around the foo function call to the stack, while only v8 needs to be spilled. See: https://godbolt.org/z/jcrPsrMrr