summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/SparcFrameLowering.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-09 04:37:47 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-09 04:37:47 +0000
commit2cfe46fd34158610e8456b7f894bdd5574f0eaee (patch)
treeacbfa814362178c9fa190b66cc3f661d9845b05e /llvm/lib/Target/Sparc/SparcFrameLowering.h
parent54d770cb1fedf23466eb75e7f34fa561e8d63d23 (diff)
downloadbcm5719-llvm-2cfe46fd34158610e8456b7f894bdd5574f0eaee.tar.gz
bcm5719-llvm-2cfe46fd34158610e8456b7f894bdd5574f0eaee.zip
Compute correct frame sizes for SPARC v9 64-bit frames.
The save area is twice as big and there is no struct return slot. The stack pointer is always 16-byte aligned (after adding the bias). Also eliminate the stack adjustment instructions around calls when the function has a reserved stack frame. llvm-svn: 179083
Diffstat (limited to 'llvm/lib/Target/Sparc/SparcFrameLowering.h')
-rw-r--r--llvm/lib/Target/Sparc/SparcFrameLowering.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/Sparc/SparcFrameLowering.h b/llvm/lib/Target/Sparc/SparcFrameLowering.h
index 464233e7da3..c3756620161 100644
--- a/llvm/lib/Target/Sparc/SparcFrameLowering.h
+++ b/llvm/lib/Target/Sparc/SparcFrameLowering.h
@@ -22,10 +22,12 @@ namespace llvm {
class SparcSubtarget;
class SparcFrameLowering : public TargetFrameLowering {
+ const SparcSubtarget &SubTarget;
public:
- explicit SparcFrameLowering(const SparcSubtarget &/*sti*/)
- : TargetFrameLowering(TargetFrameLowering::StackGrowsDown, 8, 0) {
- }
+ explicit SparcFrameLowering(const SparcSubtarget &ST)
+ : TargetFrameLowering(TargetFrameLowering::StackGrowsDown,
+ ST.is64Bit() ? 16 : 8, 0, ST.is64Bit() ? 16 : 8),
+ SubTarget(ST) {}
/// emitProlog/emitEpilog - These methods insert prolog and epilog code into
/// the function.
OpenPOWER on IntegriCloud