On Fri, Jul 26, 2024 at 6:48 PM Jeff Law <jeffreya...@gmail.com> wrote: > > > > On 7/24/24 12:00 PM, Raphael Moreira Zinsly wrote: > > Adds basic support to vector stack-clash protection using a loop to do > > the probing and stack adjustments. > > > > gcc/ChangeLog: > > * config/riscv/riscv.cc > > (riscv_allocate_and_probe_stack_loop): New function. > > (riscv_v_adjust_scalable_frame): Add stack-clash protection > > support. > > (riscv_allocate_and_probe_stack_space): Move the probe loop > > implementation to riscv_allocate_and_probe_stack_loop. > > * config/riscv/riscv.h: Define RISCV_STACK_CLASH_VECTOR_CFA_REGNUM. > > > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/stack-check-cfa-3.c: New test. > > * gcc.target/riscv/stack-check-prologue-16.c: New test. > > * gcc.target/riscv/struct_vect_24.c: New test. > So my only worry here is using another scratch register in the prologue > code instead of using one of the preexisting prologue scratch registers. > Is there a reasonable way to use PROLOGUE_TEMP or PROLOGUE_TEMP2 here?
These are the preexisting prologue scratch registers: PROLOGUE_TEMP is t0 and PROLOGUE_TEMP2 is t1. > Otherwise this looks good as well. So let's get closure on that > question and we can move forward after that. > > jeff -- Raphael Moreira Zinsly