[clang] [llvm] [ARM] Add support for Windows SEH (PR #184953)

Trung Nguyen via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 29 08:21:59 PDT 2026


================

----------------
trungnt2910 wrote:

> We might still need the frame pointer. We force FP-relative addressing modes to access arguments passed on the stack in functions with stack realignment. We could stash the pointer somewhere else, but we'd need code to explicitly do that.

>From what I observed, we actually don't need the frame pointer even in this case. I tried examples where the arguments are passed through the stack. In these examples, `clang` seems to emit `alloca` statements to allocate them on the callee's stack.

When transformed into assembly, these arguments are loaded from the parents stack using the function's R11 (which is entirely valid outside of SEH funclets) and copied into the function's stack **after** any potential realignment.

When these parameters are accessed by SEH funclets, `R6` (base pointer) offsets are valid, just like it is for any other local stack variable.

> I'd like to see some test coverage, in any case.

I added a `clang` test for ARM that asserts my observation.

https://github.com/llvm/llvm-project/pull/184953


More information about the cfe-commits mailing list