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?


Otherwise this looks good as well. So let's get closure on that question and we can move forward after that.

jeff

Reply via email to