diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-09 04:37:47 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-04-09 04:37:47 +0000 |
commit | 2cfe46fd34158610e8456b7f894bdd5574f0eaee (patch) | |
tree | acbfa814362178c9fa190b66cc3f661d9845b05e /llvm/lib/Target/Sparc/SparcFrameLowering.h | |
parent | 54d770cb1fedf23466eb75e7f34fa561e8d63d23 (diff) | |
download | bcm5719-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.h | 8 |
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. |