summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-22 13:05:16 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2011-01-22 13:05:16 +0000
commitcc91b7a3f60ea2bdb8ec059935bdd10d4ac6f784 (patch)
tree969dd925b98b295167f4e143b06a38977b3b59e9 /llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h
parent1e1888979b04633616f65614a1e4fde69d1f2d48 (diff)
downloadbcm5719-llvm-cc91b7a3f60ea2bdb8ec059935bdd10d4ac6f784.tar.gz
bcm5719-llvm-cc91b7a3f60ea2bdb8ec059935bdd10d4ac6f784.zip
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
Diffstat (limited to 'llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h')
-rw-r--r--llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h11
1 files changed, 9 insertions, 2 deletions
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; }
};
}
OpenPOWER on IntegriCloud