[llvm] AArch64: align pair-wise spills on WoS to 16-byte (PR #166902)

Benjamin Maxwell via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 11 02:53:43 PST 2025


================
@@ -1688,6 +1703,21 @@ void computeCalleeSaveRegisterPairs(const AArch64FrameLowering &AFL,
   }
 
   bool FPAfterSVECalleeSaves = IsWindows && AFI->getSVECalleeSavedStackSize();
+  // Windows AAPCS has x9-x15 as volatile registers, x16-x17 as intra-procedural
+  // scratch, x18 as platform reserved. However, clang has extended calling
+  // convensions such as preserve_most and preserve_all which treat these as
+  // CSR. As such, the ARM64 unwind uOPs bias registers by 19. We use ARM64EC
+  // uOPs which have separate restrictions. We need to check for that.
+  //
+  // FIXME: we currently do not account for the D registers as the current LLVM
+  // support does not support spiling the D registers.
----------------
MacDue wrote:

Could you clarify this FIXME? Is this referring to the current ARM64EC support? As Spilling D-registers is supported generally. 

https://github.com/llvm/llvm-project/pull/166902


More information about the llvm-commits mailing list