[PATCH] D141153: [LocalStackSlotAllocation] Minor simplifications. NFC
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 6 11:42:39 PST 2023
craig.topper created this revision.
craig.topper added reviewers: arsenm, john.brawn, reames, MatzeB.
Herald added subscribers: StephenFan, hiraditya.
Herald added a project: All.
craig.topper requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.
Instead of maintaining a separate valid flag for BaseReg, Use
BaseReg.isValid(). I think this is left over from an older
implementation that maintained a vector of base registers.
The other change is not do a speculative assignment to BaseOffset
that needs to be reverted. Only commit it after we do the check.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D141153
Files:
llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
Index: llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
===================================================================
--- llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
+++ llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
@@ -288,7 +288,6 @@
// stack frame. If it wants one, re-use a suitable one we've previously
// allocated, or if there isn't one that fits the bill, allocate a new one
// and ask the target to create a defining instruction for it.
- bool UsedBaseReg = false;
MachineFrameInfo &MFI = Fn.getFrameInfo();
const TargetRegisterInfo *TRI = Fn.getSubtarget().getRegisterInfo();
@@ -386,7 +385,7 @@
// instruction itself will be taken into account by the target,
// so we don't have to adjust for it here when reusing a base
// register.
- if (UsedBaseReg &&
+ if (BaseReg.isValid() &&
lookupCandidateBaseReg(BaseReg, BaseOffset, FrameSizeAdjust,
LocalOffset, MI, TRI)) {
LLVM_DEBUG(dbgs() << " Reusing base register " << BaseReg << "\n");
@@ -396,8 +395,7 @@
// No previously defined register was in range, so create a new one.
int64_t InstrOffset = TRI->getFrameIndexInstrOffset(&MI, idx);
- int64_t PrevBaseOffset = BaseOffset;
- BaseOffset = FrameSizeAdjust + LocalOffset + InstrOffset;
+ int64_t CandBaseOffset = FrameSizeAdjust + LocalOffset + InstrOffset;
// We'd like to avoid creating single-use virtual base registers.
// Because the FrameRefs are in sorted order, and we've already
@@ -406,12 +404,13 @@
// then don't bother creating it.
if (ref + 1 >= e ||
!lookupCandidateBaseReg(
- BaseReg, BaseOffset, FrameSizeAdjust,
+ BaseReg, CandBaseOffset, FrameSizeAdjust,
FrameReferenceInsns[ref + 1].getLocalOffset(),
- *FrameReferenceInsns[ref + 1].getMachineInstr(), TRI)) {
- BaseOffset = PrevBaseOffset;
+ *FrameReferenceInsns[ref + 1].getMachineInstr(), TRI))
continue;
- }
+
+ // Save the base offset.
+ BaseOffset = CandBaseOffset;
// Tell the target to insert the instruction to initialize
// the base register.
@@ -428,9 +427,8 @@
Offset = -InstrOffset;
++NumBaseRegisters;
- UsedBaseReg = true;
}
- assert(BaseReg && "Unable to allocate virtual base register!");
+ assert(BaseReg.isValid() && "Unable to allocate virtual base register!");
// Modify the instruction to use the new base register rather
// than the frame index operand.
@@ -440,5 +438,5 @@
++NumReplacements;
}
- return UsedBaseReg;
+ return BaseReg.isValid();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141153.486949.patch
Type: text/x-patch
Size: 2687 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230106/861c77ea/attachment.bin>
More information about the llvm-commits
mailing list