[PATCH] D125433: [ARM64][SEH] PR54879: Packed Unwind Info when Homing Int Param Regs

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 12 04:28:32 PDT 2022


mstorsjo added inline comments.


================
Comment at: llvm/lib/MC/MCWin64EH.cpp:640
+      ENops++; EI--; continue;
+    }
+    // If we reach here, we find unmatching ops that are NOT UOP_Nop.
----------------
efriedma wrote:
> We also use checkPackedEpilog() for to compute the epilogue offset in xdata records; we can't mess with the result for the sake of analyzing packed unwind.  If you need a different analysis, please split it into a separate function, or use a flag.  (Probably easier to understand if you split it into a separate function?)
+1, indeed. If we should tolerate a differing epilogue for the case of packed unwind info, we need a separate function to determine if an epilogue matches a prologue, for a specific packed form. Otherwise, we'd end up trying to share epilogues with prologues (for the non-packed format) where they actually don't match.

However, I'd like to take this whole issue back to the drawing board first; let me follow up on the bug report, to first exactly nail the expected behaviour.


================
Comment at: llvm/test/MC/AArch64/seh-packed-unwind.s:509
     nop
     .seh_nop
     ldr x19, [sp], #80
----------------
If we would proceed with this patch, then we must also change the behaviour for the existing testcase for `func5`. For a specific packed form of unwind data, there can't be any ambiguity whether an epilog contains nops or not - we can't allow both cases. Let me follow up on the original bug report on that topic.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D125433/new/

https://reviews.llvm.org/D125433



More information about the llvm-commits mailing list