diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-08-10 06:26:49 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-08-10 06:26:49 +0000 |
| commit | 8d5d1c13312cdfed93787721cf5db09bf3beb218 (patch) | |
| tree | 83fc1130d95ed98762e0403ff60524e4bfd31488 /llvm/lib/Target/ARM/ARMISelLowering.cpp | |
| parent | 884514066e593ebf735c7f3e2407b78f86b77806 (diff) | |
| download | bcm5719-llvm-8d5d1c13312cdfed93787721cf5db09bf3beb218.tar.gz bcm5719-llvm-8d5d1c13312cdfed93787721cf5db09bf3beb218.zip | |
Fix ARM hasFP() semantics. It should return true whenever FP register is
reserved, not available for general allocation. This eliminates all the
extra checks for Darwin.
This change also fixes the use of FP to access frame indices in leaf
functions and cleaned up some confusing code in epilogue emission.
llvm-svn: 110655
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index db550b1c429..c3d60ad9e68 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -742,14 +742,15 @@ Sched::Preference ARMTargetLowering::getSchedulingPreference(SDNode *N) const { unsigned ARMTargetLowering::getRegPressureLimit(const TargetRegisterClass *RC, MachineFunction &MF) const { - unsigned FPDiff = RegInfo->hasFP(MF) ? 1 : 0; switch (RC->getID()) { default: return 0; case ARM::tGPRRegClassID: - return 5 - FPDiff; - case ARM::GPRRegClassID: - return 10 - FPDiff - (Subtarget->isR9Reserved() ? 1 : 0); + return RegInfo->hasFP(MF) ? 4 : 5; + case ARM::GPRRegClassID: { + unsigned FP = RegInfo->hasFP(MF) ? 1 : 0; + return 10 - FP - (Subtarget->isR9Reserved() ? 1 : 0); + } case ARM::SPRRegClassID: // Currently not used as 'rep' register class. case ARM::DPRRegClassID: return 32 - 10; |

