[all-commits] [llvm/llvm-project] 24ba13: AArch64: modify Swift async frame record storage o...

Saleem Abdulrasool via All-commits all-commits at lists.llvm.org
Sat Apr 30 09:24:15 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 24ba1302b38bf865e46b465bac127ff551040bd5
      https://github.com/llvm/llvm-project/commit/24ba1302b38bf865e46b465bac127ff551040bd5
  Author: Saleem Abdulrasool <compnerd at compnerd.org>
  Date:   2022-04-30 (Sat, 30 Apr 2022)

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

  Log Message:
  -----------
  AArch64: modify Swift async frame record storage on Windows

The frame layout on Windows differs from that on other platforms. It
will spill the registers in descending numeric value (i.e. x30, x29,
...). Furthermore, the x29, x30 pair is particularly important as it
is used for the fast stack walking. As a result, we cannot simply
insert the Swift async frame record in between the store. To provide
the simplistic search mechanism, always spill the async frame record
prior to the spilled registers.

This was caught by the assertion failure in the frame lowering code when
building the runtime for Windows AArch64.

Fixes: #55058

Differential Revision: https://reviews.llvm.org/D124498
Reviewed By: mstorsjo




More information about the All-commits mailing list