[llvm] [AArch64][SME] Save VG for unwind info when changing streaming-mode (PR #83301)

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 12 14:54:18 PDT 2024


efriedma-quic wrote:

Streaming caller -> non-streaming callee works, sure.

>From your description, not completely sure how you plan to handle the streaming-compatible caller -> non-streaming callee case; there's no such thing as a conditional cfi_offset, as far as I know.  I'd at least like to see the proposed assembly sequence, even if you don't implement it in this patch.

The problem case is "non-streaming SVE-enabled caller -> locally-streaming SVE-disabled callee".  The caller doesn't set VG because it doesn't know anything about streaming.  The callee can't set VG because it can't read the non-streaming vector length.  The only way I can think of to make it work, given the specified structure of the unwind data, is a runtime check for whether SVE is available.  But the ABI doesn't provide any way to check that at the moment.

I don't have a problem with splitting the patches however you think is appropriate, but we need to make sure the proposed scheme actually works before we go forward with it.

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


More information about the llvm-commits mailing list