[all-commits] [llvm/llvm-project] 50e0ac: [AArch64] Fix aligning the stack after calling __c...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Wed Oct 12 23:54:28 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 50e0aced4521260af842dba73f1d8c50d36314ea
      https://github.com/llvm/llvm-project/commit/50e0aced4521260af842dba73f1d8c50d36314ea
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    A llvm/test/CodeGen/AArch64/win-align-chkstk.ll

  Log Message:
  -----------
  [AArch64] Fix aligning the stack after calling __chkstk

Whenever a call to __chkstk was made, the frame lowering previously
omitted the aligning (as NumBytes was reset to zero before doing
alignment).

This fixes https://github.com/llvm/llvm-project/issues/56182.

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


  Commit: 19e2b403b4a9d92b95400dd6e3ecb198884de64a
      https://github.com/llvm/llvm-project/commit/19e2b403b4a9d92b95400dd6e3ecb198884de64a
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

  Log Message:
  -----------
  [AArch64] Remove dead code for inserting SEH opcodes for realignment. NFC.

If the stack is realigned, we've emitted a frame pointer and
already terminated the SEH prologue, making this dead code since
a07787c9a50c046e45921dd665f5a53a752bbc31.

The immediate to this SEH opcode was entirely bogus - we don't
know how many bytes the AND operation adjusts the SP, and by
doing "NumBytes & andMaskEncoded" (where andMaskEncoded was the
immediate bitpattern for the AND instruction), the immediate to the
opcode was total gibberish.

This hasn't had any practical effect, since the original stack
pointer always was restored from the frame pointer afterwards anyway.

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


  Commit: 24303e3ad2b5bf4eb4a5ef4979f1c4f1d1ae9fa6
      https://github.com/llvm/llvm-project/commit/24303e3ad2b5bf4eb4a5ef4979f1c4f1d1ae9fa6
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

  Log Message:
  -----------
  [AArch64] Use encodeLogicalImmediate for forming the immediate to an AND. NFC.

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


  Commit: cbd8464595220b5ea76c70ac9965d84970c4b712
      https://github.com/llvm/llvm-project/commit/cbd8464595220b5ea76c70ac9965d84970c4b712
  Author: Martin Storsjö <martin at martin.st>
  Date:   2022-10-13 (Thu, 13 Oct 2022)

  Changed paths:
    M llvm/lib/MC/MCWin64EH.cpp
    M llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
    M llvm/test/CodeGen/AArch64/wineh5.mir

  Log Message:
  -----------
  [MC] [Win64EH] Check that ARM64 prologs and epilogs have the right matching number of instructions

This matches what was done for the ARM implementation (where getting
the instruction sizes right is even more tricky, and hence needed
tighter testing).

This will allow catching any future cases where prologs and epilogs
don't match the instructions within them.

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


Compare: https://github.com/llvm/llvm-project/compare/b062ee7dc451...cbd846459522


More information about the All-commits mailing list