summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsMachineFunction.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2013-01-30 00:26:49 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2013-01-30 00:26:49 +0000
commitc0b020690bf04f5336bffafbcb1488763d1e4b70 (patch)
tree733364a6645f497ea13f13b005d25009809af16c /llvm/lib/Target/Mips/MipsMachineFunction.cpp
parent26afef3e8ddf7809e23b9072a7a320ebef1e878a (diff)
downloadbcm5719-llvm-c0b020690bf04f5336bffafbcb1488763d1e4b70.tar.gz
bcm5719-llvm-c0b020690bf04f5336bffafbcb1488763d1e4b70.zip
[mips] Lower EH_RETURN.
Patch by Sasa Stankovic. llvm-svn: 173862
Diffstat (limited to 'llvm/lib/Target/Mips/MipsMachineFunction.cpp')
-rw-r--r--llvm/lib/Target/Mips/MipsMachineFunction.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsMachineFunction.cpp b/llvm/lib/Target/Mips/MipsMachineFunction.cpp
index 0c71596cae3..59b23f7ad7c 100644
--- a/llvm/lib/Target/Mips/MipsMachineFunction.cpp
+++ b/llvm/lib/Target/Mips/MipsMachineFunction.cpp
@@ -56,4 +56,20 @@ unsigned MipsFunctionInfo::getMips16SPAliasReg() {
return Mips16SPAliasReg = MF.getRegInfo().createVirtualRegister(RC);
}
+void MipsFunctionInfo::createEhDataRegsFI() {
+ for (int I = 0; I < 4; ++I) {
+ const MipsSubtarget &ST = MF.getTarget().getSubtarget<MipsSubtarget>();
+ const TargetRegisterClass *RC = ST.isABI_N64() ?
+ &Mips::CPU64RegsRegClass : &Mips::CPURegsRegClass;
+
+ EhDataRegFI[I] = MF.getFrameInfo()->CreateStackObject(RC->getSize(),
+ RC->getAlignment(), false);
+ }
+}
+
+bool MipsFunctionInfo::isEhDataRegFI(int FI) const {
+ return CallsEhReturn && (FI == EhDataRegFI[0] || FI == EhDataRegFI[1]
+ || FI == EhDataRegFI[2] || FI == EhDataRegFI[3]);
+}
+
void MipsFunctionInfo::anchor() { }
OpenPOWER on IntegriCloud