[RISCV] Pre-commit testcase for PR55442
The testcase show the stack pointer isn't recovered when we got exception from `_Z3fooiiiiiiiiiiPi`, and then we screw up due to restore return address from wrong stack pointer. NOTE: Trigger conditions: 1. Frame pointer is required. 2. Stack has out-going argument 3. Vector extension is enabled. Another run-able testcase: $ clang++ -target riscv64-unknown-linux-gnu -march=rv64gcv test.cpp ``` void __attribute__((noinline)) foo(int, int, int, int, int, int, int, int, int, int, int *){ throw int(0); } int main(int argc, char **argv) { int exception_value = 1; try { foo(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } catch (int i) { exception_value = i; } return exception_value; } ``` Reviewed By: rogfer01 Differential Revision: https://reviews.llvm.org/D126860
Loading
Please sign in to comment