[PATCH] D88641: [AArch64] Omit SEH directives for the epilogue if none are needed

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 1 10:04:03 PDT 2020


efriedma added a comment.

That explains what was happening in llvm/test/CodeGen/AArch64/lround-conv-fp16-win.ll etc.



================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1527
   bool IsFunclet = false;
+  bool HasEpilogStart = false;
   auto WinCFI = make_scope_exit([&]() {
----------------
Not sure the HasEpilogStart boolean is useful here; could you just `assert(HasWinCFI == MF.hasWinCFI())`?  And we shouldn't ever need to call setHasWinCFI().


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1634
 
-  if (NeedsWinCFI) {
+  if (NeedsWinCFI && MF.hasWinCFI()) {
+    // If the prologue didn't contain any SEH opcodes and didn't set the
----------------
Simplify to `if (MF.hasWinCFI()) {`?


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1734
     if (Done) {
-      if (NeedsWinCFI) {
-        HasWinCFI = true;
+      if (NeedsWinCFI && HasWinCFI) {
         BuildMI(MBB, MBB.getFirstTerminator(), DL,
----------------
Simplify this to `if (HasWinCFI) {`?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88641



More information about the llvm-commits mailing list