[clang] [llvm] Implement `preserve_none` for 32-bit x86 (PR #150106)

Brandt Bucher via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 1 11:39:32 PDT 2025


brandtbucher wrote:

> Function X86FrameLowering::spillFPBP can do this for clobbered base pointer and frame pointer.

So the `RBX`/`ESI` base pointers can be removed from the callee-saved-regs lists?

```diff
diff --git a/llvm/lib/Target/X86/X86CallingConv.td b/llvm/lib/Target/X86/X86CallingConv.td
index 9e5aaeb44334..32eedcb9ca79 100644
--- a/llvm/lib/Target/X86/X86CallingConv.td
+++ b/llvm/lib/Target/X86/X86CallingConv.td
@@ -1197,8 +1197,8 @@ def CSR_64_AllRegs_AVX512 : CalleeSavedRegs<(sub (add CSR_64_MostRegs, RAX,
                                                       (sequence "ZMM%u", 0, 31),
                                                       (sequence "K%u", 0, 7)),
                                                  (sequence "XMM%u", 0, 15))>;
-def CSR_64_NoneRegs    : CalleeSavedRegs<(add RBP, RBX)>;
-def CSR_32_NoneRegs    : CalleeSavedRegs<(add EBP, ESI)>;
+def CSR_64_NoneRegs    : CalleeSavedRegs<(add RBP)>;
+def CSR_32_NoneRegs    : CalleeSavedRegs<(add EBP)>;
 
 // Standard C + YMM6-15
 def CSR_Win64_Intel_OCL_BI_AVX : CalleeSavedRegs<(add RBX, RBP, RDI, RSI, R12,
```



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


More information about the llvm-commits mailing list