summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2015-02-13 00:39:36 +0000
committerEric Christopher <echristo@gmail.com>2015-02-13 00:39:36 +0000
commit736d39e18917fe3ba76b81f6609f29f2482f14cb (patch)
tree6d58112c063da3a1da019757bf9c64b93e2d62b1 /llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
parentf71609b5ddd3a3059b4ae184b6b5e7f5689275d6 (diff)
downloadbcm5719-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.cpp7
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(
OpenPOWER on IntegriCloud