[PATCH] D92104: [RegisterScavenging] Fix assert in scavengeRegisterBackwards
Craig Blackmore via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 25 08:03:01 PST 2020
craigblackmore created this revision.
craigblackmore added reviewers: MatzeB, arsenm.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
craigblackmore requested review of this revision.
Herald added a subscriber: wdng.
According to the documentation, if a spill is required to make a
register available and AllowSpill is false, then NoRegister should be
returned, however, this scenario was actually triggering an assertion
failure.
This patch moves the assertion after the handling of AllowSpill.
Authored by: Lewis Revill
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D92104
Files:
llvm/lib/CodeGen/RegisterScavenging.cpp
Index: llvm/lib/CodeGen/RegisterScavenging.cpp
===================================================================
--- llvm/lib/CodeGen/RegisterScavenging.cpp
+++ llvm/lib/CodeGen/RegisterScavenging.cpp
@@ -573,7 +573,6 @@
RestoreAfter);
MCPhysReg Reg = P.first;
MachineBasicBlock::iterator SpillBefore = P.second;
- assert(Reg != 0 && "No register left to scavenge!");
// Found an available register?
if (SpillBefore == MBB.end()) {
LLVM_DEBUG(dbgs() << "Scavenged free register: " << printReg(Reg, TRI)
@@ -584,6 +583,8 @@
if (!AllowSpill)
return 0;
+ assert(Reg != 0 && "No register left to scavenge!");
+
MachineBasicBlock::iterator ReloadAfter =
RestoreAfter ? std::next(MBBI) : MBBI;
MachineBasicBlock::iterator ReloadBefore = std::next(ReloadAfter);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92104.307601.patch
Type: text/x-patch
Size: 826 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201125/1af89d08/attachment.bin>
More information about the llvm-commits
mailing list