[PATCH] D65504: [AArch64] Do not allocate unnecessary emergency slot.
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 1 03:54:36 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL367540: [AArch64] Do not allocate unnecessary emergency slot. (authored by s.desmalen, committed by ).
Herald added a project: LLVM.
Changed prior to commit:
https://reviews.llvm.org/D65504?vs=212542&id=212777#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65504/new/
https://reviews.llvm.org/D65504
Files:
llvm/trunk/lib/Target/AArch64/AArch64FrameLowering.cpp
llvm/trunk/test/CodeGen/AArch64/extra-callee-save.mir
Index: llvm/trunk/test/CodeGen/AArch64/extra-callee-save.mir
===================================================================
--- llvm/trunk/test/CodeGen/AArch64/extra-callee-save.mir
+++ llvm/trunk/test/CodeGen/AArch64/extra-callee-save.mir
@@ -0,0 +1,28 @@
+#RUN: llc -mtriple=aarch64-- -run-pass prologepilog %s -o - | FileCheck %s
+# Check that we spill a scratch register, but not also an additional
+# emergency spill slot.
+---
+name: big_stack
+# CHECK-LABEL: name: big_stack
+# CHECK: frame-setup STPXi killed $x20, killed $x19
+# CHECK: $sp = frame-setup SUBXri $sp, 8, 12
+# CHECK-NOT: frame-setup SUBXri $sp, 16, 0
+tracksRegLiveness: true
+stack:
+ - { id: 0, name: '', size: 32761, alignment: 8 }
+body: |
+ bb.0:
+ $x19 = IMPLICIT_DEF
+ ; $x20 can be used as scratch register.
+ $x21 = IMPLICIT_DEF
+ $x22 = IMPLICIT_DEF
+ $x23 = IMPLICIT_DEF
+ $x24 = IMPLICIT_DEF
+ $x25 = IMPLICIT_DEF
+ $x26 = IMPLICIT_DEF
+ $x27 = IMPLICIT_DEF
+ $x28 = IMPLICIT_DEF
+ $lr = IMPLICIT_DEF
+ $fp = IMPLICIT_DEF
+ RET_ReallyLR
+...
Index: llvm/trunk/lib/Target/AArch64/AArch64FrameLowering.cpp
===================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64FrameLowering.cpp
+++ llvm/trunk/lib/Target/AArch64/AArch64FrameLowering.cpp
@@ -2113,7 +2113,7 @@
SavedRegs.set(AArch64::LR);
}
- LLVM_DEBUG(dbgs() << "*** determineCalleeSaves\nUsed CSRs:";
+ LLVM_DEBUG(dbgs() << "*** determineCalleeSaves\nSaved CSRs:";
for (unsigned Reg
: SavedRegs.set_bits()) dbgs()
<< ' ' << printReg(Reg, RegInfo);
@@ -2145,7 +2145,7 @@
// store the pair.
if (produceCompactUnwindFrame(MF))
SavedRegs.set(UnspilledCSGPRPaired);
- ExtraCSSpill = UnspilledCSGPRPaired;
+ ExtraCSSpill = UnspilledCSGPR;
}
// If we didn't find an extra callee-saved register to spill, create
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65504.212777.patch
Type: text/x-patch
Size: 1944 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190801/925e79c6/attachment.bin>
More information about the llvm-commits
mailing list