================ @@ -1169,7 +1169,11 @@ DEFINE_LIBUNWIND_FUNCTION(_ZN9libunwind15Registers_riscv6jumptoEv) ILOAD x\i, (RISCV_ISIZE * \i)(a0) .endr // skip a0 for now +#if defined(__riscv_abi_rve) ---------------- lenary wrote:
I don't understand how the non-e version of this list relates to either the ABI or the architecture, so it's really hard to know what this should be doing in the e case. I'm also somewhat surprised that the list in this function is different from the one below, in save function. Shouldn't these be somewhat symmetric (barring having to do things with a few registers which represent unwinder state, like in this case `a0`). The non-e version is restoring all the argument registers, some (not all) of the callee-saves, and some (not all) of the temporary registers. Are there good docs as to why it is doing so? I think we might need to restore according to the architecture rather than the ABI, so that we restore live temporary registers correctly, but I'm not entirely sure, and if i could understand what the non-e case was doing better, I'd be able to give a clearer steer as to which this should be based on. https://github.com/llvm/llvm-project/pull/98855 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits