diff options
author | Eric Christopher <echristo@gmail.com> | 2015-02-13 00:39:36 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2015-02-13 00:39:36 +0000 |
commit | 736d39e18917fe3ba76b81f6609f29f2482f14cb (patch) | |
tree | 6d58112c063da3a1da019757bf9c64b93e2d62b1 /llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | |
parent | f71609b5ddd3a3059b4ae184b6b5e7f5689275d6 (diff) | |
download | bcm5719-llvm-736d39e18917fe3ba76b81f6609f29f2482f14cb.tar.gz bcm5719-llvm-736d39e18917fe3ba76b81f6609f29f2482f14cb.zip |
The TOC save offset can be computed at compile time, do so and
propagate changes.
llvm-svn: 228997
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCFrameLowering.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp index 33f66fed81c..a2471da2f7a 100644 --- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp @@ -43,10 +43,15 @@ static unsigned computeReturnSaveOffset(const PPCSubtarget &STI) { return STI.isPPC64() ? 16 : 4; } +static unsigned computeTOCSaveOffset(const PPCSubtarget &STI) { + return STI.isELFv2ABI() ? 24 : 40; +} + PPCFrameLowering::PPCFrameLowering(const PPCSubtarget &STI) : TargetFrameLowering(TargetFrameLowering::StackGrowsDown, (STI.hasQPX() || STI.isBGQ()) ? 32 : 16, 0), - Subtarget(STI), ReturnSaveOffset(computeReturnSaveOffset(Subtarget)) {} + Subtarget(STI), ReturnSaveOffset(computeReturnSaveOffset(Subtarget)), + TOCSaveOffset(computeTOCSaveOffset(Subtarget)) {} // With the SVR4 ABI, callee-saved registers have fixed offsets on the stack. const PPCFrameLowering::SpillSlot *PPCFrameLowering::getCalleeSavedSpillSlots( |