aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/XCore
diff options
context:
space:
mode:
authorAlexander Timofeev <alexander.timofeev@amd.com>2022-11-17 19:03:22 +0100
committerAlexander Timofeev <alexander.timofeev@amd.com>2022-11-18 15:57:34 +0100
commit32bd75716c27d1a094c2436529b596ce1547f6eb (patch)
tree3fd4096552f727e0c1ecdb07bb4b17df1216bdfb /llvm/lib/Target/XCore
parent244105f791539a84eeef7e8e50c180e413675b60 (diff)
downloadllvm-32bd75716c27d1a094c2436529b596ce1547f6eb.zip
llvm-32bd75716c27d1a094c2436529b596ce1547f6eb.tar.gz
llvm-32bd75716c27d1a094c2436529b596ce1547f6eb.tar.bz2
PEI should be able to use backward walk in replaceFrameIndicesBackward.
The backward register scavenger has correct register liveness information. PEI should leverage the backward register scavenger. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D137574
Diffstat (limited to 'llvm/lib/Target/XCore')
-rw-r--r--llvm/lib/Target/XCore/XCoreRegisterInfo.cpp5
-rw-r--r--llvm/lib/Target/XCore/XCoreRegisterInfo.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp b/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp
index 0d1ba39..ed5a0ad 100644
--- a/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp
+++ b/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp
@@ -250,7 +250,7 @@ XCoreRegisterInfo::useFPForScavengingIndex(const MachineFunction &MF) const {
return false;
}
-void
+bool
XCoreRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
int SPAdj, unsigned FIOperandNum,
RegScavenger *RS) const {
@@ -284,7 +284,7 @@ XCoreRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
if (MI.isDebugValue()) {
MI.getOperand(FIOperandNum).ChangeToRegister(FrameReg, false /*isDef*/);
MI.getOperand(FIOperandNum + 1).ChangeToImmediate(Offset);
- return;
+ return false;
}
// fold constant into offset.
@@ -313,6 +313,7 @@ XCoreRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
// Erase old instruction.
MachineBasicBlock &MBB = *MI.getParent();
MBB.erase(II);
+ return true;
}
diff --git a/llvm/lib/Target/XCore/XCoreRegisterInfo.h b/llvm/lib/Target/XCore/XCoreRegisterInfo.h
index f1eec7b..b72875c 100644
--- a/llvm/lib/Target/XCore/XCoreRegisterInfo.h
+++ b/llvm/lib/Target/XCore/XCoreRegisterInfo.h
@@ -34,7 +34,7 @@ public:
bool useFPForScavengingIndex(const MachineFunction &MF) const override;
- void eliminateFrameIndex(MachineBasicBlock::iterator II,
+ bool eliminateFrameIndex(MachineBasicBlock::iterator II,
int SPAdj, unsigned FIOperandNum,
RegScavenger *RS = nullptr) const override;