Skip to content

Commit 0773a9c

Browse files
committed
Use oversized stack slots on ez80.
1 parent 18ec174 commit 0773a9c

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

llvm/include/llvm/CodeGen/TargetRegisterInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ class TargetRegisterInfo : public MCRegisterInfo {
277277

278278
/// Return the size in bytes of the stack slot allocated to hold a spilled
279279
/// copy of a register from class RC.
280-
unsigned getSpillSize(const TargetRegisterClass &RC) const {
280+
virtual unsigned getSpillSize(const TargetRegisterClass &RC) const {
281281
return getRegClassInfo(RC).SpillSize / 8;
282282
}
283283

llvm/lib/Target/Z80/Z80RegisterInfo.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ Z80RegisterInfo::Z80RegisterInfo(const Triple &TT)
3636
StackPtr = Is24Bit ? Z80::SPL : Z80::SPS;
3737
}
3838

39+
unsigned Z80RegisterInfo::getSpillSize(const TargetRegisterClass &RC) const {
40+
unsigned SpillSize = TargetRegisterInfo::getSpillSize(RC);
41+
if (Is24Bit && SpillSize == 2)
42+
SpillSize = 3;
43+
return SpillSize;
44+
}
45+
3946
const TargetRegisterClass *
4047
Z80RegisterInfo::getPointerRegClass(const MachineFunction &MF,
4148
unsigned Kind) const {

llvm/lib/Target/Z80/Z80RegisterInfo.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ class Z80RegisterInfo final : public Z80GenRegisterInfo {
3434
public:
3535
Z80RegisterInfo(const Triple &TT);
3636

37+
unsigned getSpillSize(const TargetRegisterClass &RC) const override;
38+
3739
/// Code Generation virtual methods...
3840
///
3941
bool trackLivenessAfterRegAlloc(const MachineFunction &MF) const override {

0 commit comments

Comments
 (0)