mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Leaf functions which do not save CSRs can be frameless even with -disable-fp-elim.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79039 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9c546cd946
commit
98a0104014
@ -440,6 +440,13 @@ bool ARMBaseRegisterInfo::hasFP(const MachineFunction &MF) const {
|
||||
MFI->isFrameAddressTaken());
|
||||
}
|
||||
|
||||
bool ARMBaseRegisterInfo::hasStackFrame(const MachineFunction &MF) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
if (NoFramePointerElim && MFI->hasCalls())
|
||||
return true;
|
||||
return MFI->hasVarSizedObjects() || MFI->isFrameAddressTaken();
|
||||
}
|
||||
|
||||
/// estimateStackSize - Estimate and return the size of the frame.
|
||||
static unsigned estimateStackSize(MachineFunction &MF, MachineFrameInfo *MFI) {
|
||||
const MachineFrameInfo *FFI = MF.getFrameInfo();
|
||||
@ -589,7 +596,7 @@ ARMBaseRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
}
|
||||
|
||||
bool ExtraCSSpill = false;
|
||||
if (!CanEliminateFrame || hasFP(MF)) {
|
||||
if (!CanEliminateFrame || hasStackFrame(MF)) {
|
||||
AFI->setHasStackFrame(true);
|
||||
|
||||
// If LR is not spilled, but at least one of R4, R5, R6, and R7 is spilled.
|
||||
|
@ -89,6 +89,8 @@ public:
|
||||
|
||||
bool hasFP(const MachineFunction &MF) const;
|
||||
|
||||
bool hasStackFrame(const MachineFunction &MF) const;
|
||||
|
||||
void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
|
||||
RegScavenger *RS = NULL) const;
|
||||
|
||||
|
6
test/CodeGen/Thumb2/frameless.ll
Normal file
6
test/CodeGen/Thumb2/frameless.ll
Normal file
@ -0,0 +1,6 @@
|
||||
; RUN: llvm-as < %s | llc -mtriple=thumbv7-apple-darwin -disable-fp-elim | not grep mov
|
||||
; RUN: llvm-as < %s | llc -mtriple=thumbv7-linux -disable-fp-elim | not grep mov
|
||||
|
||||
define arm_apcscc void @t() nounwind readnone {
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user