mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix fallout from RegInfo => FrameLowering refactoring on MSP430.
Patch by Job Noorman! llvm-svn: 166108
This commit is contained in:
parent
9422ce72bc
commit
302a70ec1e
@ -221,3 +221,17 @@ MSP430FrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
|
||||
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 hasReservedCallFrame(const MachineFunction &MF) const;
|
||||
void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
|
||||
};
|
||||
|
||||
} // End llvm namespace
|
||||
|
@ -220,20 +220,6 @@ MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
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 {
|
||||
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
||||
|
||||
|
@ -49,8 +49,6 @@ public:
|
||||
void eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
int SPAdj, RegScavenger *RS = NULL) const;
|
||||
|
||||
void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
|
||||
|
||||
// Debug information queries.
|
||||
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…
Reference in New Issue
Block a user