[all-commits] [llvm/llvm-project] 522b4c: [AArch64] Fix mismatch in prologue and epilogue fo...

Daniel Frampton via All-commits all-commits at lists.llvm.org
Tue Mar 31 14:21:54 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 522b4c4b88a5606b0074926e8658e7fede97c230
      https://github.com/llvm/llvm-project/commit/522b4c4b88a5606b0074926e8658e7fede97c230
  Author: Daniel Frampton <Daniel.Frampton at microsoft.com>
  Date:   2020-03-31 (Tue, 31 Mar 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    A llvm/test/CodeGen/AArch64/funclet-match-add-sub-stack.ll

  Log Message:
  -----------
  [AArch64] Fix mismatch in prologue and epilogue for funclets on Windows

The generated code for a funclet can have an add to sp in the epilogue
for which there is no corresponding sub in the prologue.

This patch removes the early return from emitPrologue that was
preventing the sub to sp, and instead conditionalizes the appropriate
parts of the rest of the function.

Fixes https://bugs.llvm.org/show_bug.cgi?id=45345

Differential Revision: https://reviews.llvm.org/D77015


  Commit: 494abe139a9aab991582f1b3f3370b99b252944c
      https://github.com/llvm/llvm-project/commit/494abe139a9aab991582f1b3f3370b99b252944c
  Author: Daniel Frampton <Daniel.Frampton at microsoft.com>
  Date:   2020-03-31 (Tue, 31 Mar 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/test/CodeGen/AArch64/seh-finally.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch-cbz.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch-realign.ll
    M llvm/test/CodeGen/AArch64/wineh-try-catch.ll
    A llvm/test/CodeGen/AArch64/wineh-unwindhelp-via-fp.ll

  Log Message:
  -----------
  [AArch64] Change AArch64 Windows EH UnwindHelp object to be a fixed object

The UnwindHelp object is used during exception handling by runtime
code. It must be findable from a fixed offset from FP.

This change allocates the UnwindHelp object as a fixed object (as is
done for x86_64) to ensure that both the generated code and runtime
agree on the location of the object.

Fixes https://bugs.llvm.org/show_bug.cgi?id=45346

Differential Revision: https://reviews.llvm.org/D77016


Compare: https://github.com/llvm/llvm-project/compare/9b3bf72a0d79...494abe139a9a


More information about the All-commits mailing list