summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
diff options
context:
space:
mode:
authorAlex Bradbury <asb@lowrisc.org>2018-01-18 11:34:02 +0000
committerAlex Bradbury <asb@lowrisc.org>2018-01-18 11:34:02 +0000
commit7d6aa1f7ae73206460bc36c97d5b48bdbf7c2cd8 (patch)
tree19a95f1c99019c338f9250c313ec36b0722de084 /llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
parentc806d39182c1aa6c647d044d19d58aad9f5c95df (diff)
downloadbcm5719-llvm-7d6aa1f7ae73206460bc36c97d5b48bdbf7c2cd8.tar.gz
bcm5719-llvm-7d6aa1f7ae73206460bc36c97d5b48bdbf7c2cd8.zip
[RISCV] Implement frame pointer elimination
llvm-svn: 322839
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp b/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
index b634097bae3..6ad8bf7bca0 100644
--- a/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
@@ -71,9 +71,6 @@ void RISCVRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
getFrameLowering(MF)->getFrameIndexReference(MF, FrameIndex, FrameReg) +
MI.getOperand(FIOperandNum + 1).getImm();
- assert(MF.getSubtarget().getFrameLowering()->hasFP(MF) &&
- "eliminateFrameIndex currently requires hasFP");
-
if (!isInt<32>(Offset)) {
report_fatal_error(
"Frame offsets outside of the signed 32-bit range not supported");
@@ -102,7 +99,8 @@ void RISCVRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
}
unsigned RISCVRegisterInfo::getFrameRegister(const MachineFunction &MF) const {
- return RISCV::X8;
+ const TargetFrameLowering *TFI = getFrameLowering(MF);
+ return TFI->hasFP(MF) ? RISCV::X8 : RISCV::X2;
}
const uint32_t *
OpenPOWER on IntegriCloud