mirror of
https://github.com/RPCSX/llvm.git
synced 2025-04-12 04:56:49 +00:00
Fix fallout from RegInfo => FrameLowering refactoring on MSP430.
Patch by Job Noorman! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166108 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fdd6fa89b9
commit
e4b33a115b
@ -221,3 +221,17 @@ MSP430FrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MSP430FrameLowering::processFunctionBeforeFrameFinalized(MachineFunction &MF)
|
||||||
|
const {
|
||||||
|
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
||||||
|
|
||||||
|
// Create a frame entry for the FPW register that must be saved.
|
||||||
|
if (TFI->hasFP(MF)) {
|
||||||
|
int FrameIdx = MF.getFrameInfo()->CreateFixedObject(2, -4, true);
|
||||||
|
(void)FrameIdx;
|
||||||
|
assert(FrameIdx == MF.getFrameInfo()->getObjectIndexBegin() &&
|
||||||
|
"Slot for FPW register must be last in order to be found!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -46,6 +46,7 @@ public:
|
|||||||
|
|
||||||
bool hasFP(const MachineFunction &MF) const;
|
bool hasFP(const MachineFunction &MF) const;
|
||||||
bool hasReservedCallFrame(const MachineFunction &MF) const;
|
bool hasReservedCallFrame(const MachineFunction &MF) const;
|
||||||
|
void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
@ -220,20 +220,6 @@ MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
|||||||
MI.getOperand(i+1).ChangeToImmediate(Offset);
|
MI.getOperand(i+1).ChangeToImmediate(Offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
MSP430RegisterInfo::processFunctionBeforeFrameFinalized(MachineFunction &MF)
|
|
||||||
const {
|
|
||||||
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
|
||||||
|
|
||||||
// Create a frame entry for the FPW register that must be saved.
|
|
||||||
if (TFI->hasFP(MF)) {
|
|
||||||
int FrameIdx = MF.getFrameInfo()->CreateFixedObject(2, -4, true);
|
|
||||||
(void)FrameIdx;
|
|
||||||
assert(FrameIdx == MF.getFrameInfo()->getObjectIndexBegin() &&
|
|
||||||
"Slot for FPW register must be last in order to be found!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned MSP430RegisterInfo::getFrameRegister(const MachineFunction &MF) const {
|
unsigned MSP430RegisterInfo::getFrameRegister(const MachineFunction &MF) const {
|
||||||
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
||||||
|
|
||||||
|
@ -49,8 +49,6 @@ public:
|
|||||||
void eliminateFrameIndex(MachineBasicBlock::iterator II,
|
void eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||||
int SPAdj, RegScavenger *RS = NULL) const;
|
int SPAdj, RegScavenger *RS = NULL) const;
|
||||||
|
|
||||||
void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
|
|
||||||
|
|
||||||
// Debug information queries.
|
// Debug information queries.
|
||||||
unsigned getFrameRegister(const MachineFunction &MF) const;
|
unsigned getFrameRegister(const MachineFunction &MF) const;
|
||||||
};
|
};
|
||||||
|
17
test/CodeGen/MSP430/fp.ll
Normal file
17
test/CodeGen/MSP430/fp.ll
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
; RUN: llc -O0 -disable-fp-elim < %s | FileCheck %s
|
||||||
|
|
||||||
|
target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"
|
||||||
|
target triple = "msp430---elf"
|
||||||
|
|
||||||
|
define void @fp() nounwind {
|
||||||
|
entry:
|
||||||
|
; CHECK: fp:
|
||||||
|
; CHECK: push.w r4
|
||||||
|
; CHECK: mov.w r1, r4
|
||||||
|
; CHECK: sub.w #2, r1
|
||||||
|
%i = alloca i16, align 2
|
||||||
|
; CHECK: mov.w #0, -2(r4)
|
||||||
|
store i16 0, i16* %i, align 2
|
||||||
|
; CHECK: pop.w r4
|
||||||
|
ret void
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user