[PATCH] D87369: [MC] [Win64EH] Write packed ARM64 epilogs if possible

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 9 23:05:45 PDT 2020


mstorsjo added inline comments.


================
Comment at: llvm/include/llvm/MC/MCWinEH.h:32
+    return Offset == I.Offset && Register == I.Register &&
+           Operation == I.Operation;
+  }
----------------
efriedma wrote:
> Intentionally not comparing the label?  That seems sort of confusing
Yeah, intentionally, as it's used for checking whether an opcode in the epilogue is equivalent to one in the prologue.

AFAIK the labels aren't really used for ARM64 opcodes, where the sequence is supposed to match 1-to-1 between opcodes and instructions - contrary to on x86_64, where each opcode contains the offset from the start to the particular instruction. And even if the labels would be set (I haven't checked if they are for ARM64), you'd have them pointing at different locations in prologue and epilogue.

I can add a comment to clarify.


================
Comment at: llvm/lib/MC/MCWin64EH.cpp:642
+  // as packed epilog offset.
+  if (Offset <= 31 && PrologCodeBytes <= 124) {
+    info->EpilogMap.clear();
----------------
efriedma wrote:
> Maybe early-return -1 here?
Sure


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87369



More information about the llvm-commits mailing list