[clang] [llvm] [win][x64] Unwind v2 3/n: Add support for emitting unwind v2 information (equivalent to MSVC /d2epilogunwind) (PR #129142)
pmsjt wrote: > How do epilogs work in chained unwind tables? Do the epilog opcodes from the > original table get ignored? They are additive. When execution is on a fragment, it is assumed that all unwind opcodes from the parent fragment(s), all the way to the principal fragment, are already applied. https://github.com/llvm/llvm-project/pull/129142 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [win][x64] Unwind v2 3/n: Add support for emitting unwind v2 information (equivalent to MSVC /d2epilogunwind) (PR #129142)
pmsjt wrote: https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#chained-unwind-info-structures I don't know what an "atend" is, but what you are describing doesn't seem to be a possible solution. Epilogs must be present in the main function entry. Only the main function entry can contain unwind opcodes which make changes to the stack pointer and return (or tail-call). Fragments can save and restore registers with mov but not push/pop. Think of fragments as extensions of the body, which can save and restore aditional registers, but they won't have prologs or epilogs of their own. https://github.com/llvm/llvm-project/pull/129142 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits