diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2010-12-18 19:53:14 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2010-12-18 19:53:14 +0000 |
| commit | 3eb4fedecf5381eec25ca2c31bcced031dbd3358 (patch) | |
| tree | 4224b56ed05787db23feb4b57a9814a0ca613120 /llvm/lib/Target/PowerPC/PPCRegisterInfo.td | |
| parent | 4b4f3557de18d2565d09286348b0a03d67f9a18e (diff) | |
| download | bcm5719-llvm-3eb4fedecf5381eec25ca2c31bcced031dbd3358.tar.gz bcm5719-llvm-3eb4fedecf5381eec25ca2c31bcced031dbd3358.zip | |
Restore the behavior of frame lowering before my refactoring.
It turns out that ppc backend has really weird interdependencies
over different hooks and all stuff is fragile wrt small changes.
This should fix PR8749
llvm-svn: 122155
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCRegisterInfo.td')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCRegisterInfo.td | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.td b/llvm/lib/Target/PowerPC/PPCRegisterInfo.td index 2fbd41bd84a..879f26700c6 100644 --- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.td +++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.td @@ -301,12 +301,13 @@ def GPRC : RegisterClass<"PPC", [i32], 32, // When using the 32-bit SVR4 ABI, r13 is reserved for the Small Data Area // pointer. const PPCSubtarget &Subtarget = MF.getTarget().getSubtarget<PPCSubtarget>(); - const TargetFrameInfo *TFI = MF.getTarget().getFrameInfo(); + const PPCFrameInfo *PPCFI = + static_cast<const PPCFrameInfo*>(MF.getTarget().getFrameInfo()); if (Subtarget.isPPC64() || Subtarget.isSVR4ABI()) return end()-5; // don't allocate R13, R31, R0, R1, LR - if (TFI->hasFP(MF)) + if (PPCFI->needsFP(MF)) return end()-4; // don't allocate R31, R0, R1, LR else return end()-3; // don't allocate R0, R1, LR @@ -331,8 +332,9 @@ def G8RC : RegisterClass<"PPC", [i64], 64, } G8RCClass::iterator G8RCClass::allocation_order_end(const MachineFunction &MF) const { - const TargetFrameInfo *TFI = MF.getTarget().getFrameInfo(); - if (TFI->hasFP(MF)) + const PPCFrameInfo *PPCFI = + static_cast<const PPCFrameInfo*>(MF.getTarget().getFrameInfo()); + if (PPCFI->needsFP(MF)) return end()-5; else return end()-4; |

