From cc91b7a3f60ea2bdb8ec059935bdd10d4ac6f784 Mon Sep 17 00:00:00 2001 From: Venkatraman Govindaraju Date: Sat, 22 Jan 2011 13:05:16 +0000 Subject: Pass sret arguments through the stack instead of through registers in Sparc backend. It makes the code generated more compliant with the sparc32 ABI. llvm-svn: 124030 --- llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h') diff --git a/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h b/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h index e34c1312810..0b74308eb0e 100644 --- a/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h +++ b/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h @@ -24,16 +24,23 @@ namespace llvm { /// VarArgsFrameOffset - Frame offset to start of varargs area. int VarArgsFrameOffset; + /// SRetReturnReg - Holds the virtual register into which the sret + /// argument is passed. + unsigned SRetReturnReg; public: - SparcMachineFunctionInfo() : GlobalBaseReg(0), VarArgsFrameOffset(0) {} + SparcMachineFunctionInfo() + : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0) {} explicit SparcMachineFunctionInfo(MachineFunction &MF) - : GlobalBaseReg(0), VarArgsFrameOffset(0) {} + : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0) {} unsigned getGlobalBaseReg() const { return GlobalBaseReg; } void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; } int getVarArgsFrameOffset() const { return VarArgsFrameOffset; } void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; } + + unsigned getSRetReturnReg() const { return SRetReturnReg; } + void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; } }; } -- cgit v1.2.3