diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2025-01-24 10:53:11 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-24 10:53:11 +0000 |
commit | 8e702735090388a3231a863e343f880d0f96fecb (patch) | |
tree | 0de8577ecae863327fe271a2e56f3705af105e5e /llvm/lib/CodeGen/SelectOptimize.cpp | |
parent | e6030d389571b3f1b0f0c5a35b7fa45937ed0f6c (diff) | |
download | llvm-8e702735090388a3231a863e343f880d0f96fecb.zip llvm-8e702735090388a3231a863e343f880d0f96fecb.tar.gz llvm-8e702735090388a3231a863e343f880d0f96fecb.tar.bz2 |
[NFC][DebugInfo] Use iterator moveBefore at many call-sites (#123583)
As part of the "RemoveDIs" project, BasicBlock::iterator now carries a
debug-info bit that's needed when getFirstNonPHI and similar feed into
instruction insertion positions. Call-sites where that's necessary were
updated a year ago; but to ensure some type safety however, we'd like to
have all calls to moveBefore use iterators.
This patch adds a (guaranteed dereferenceable) iterator-taking
moveBefore, and changes a bunch of call-sites where it's obviously safe
to change to use it by just calling getIterator() on an instruction
pointer. A follow-up patch will contain less-obviously-safe changes.
We'll eventually deprecate and remove the instruction-pointer
insertBefore, but not before adding concise documentation of what
considerations are needed (very few).
Diffstat (limited to 'llvm/lib/CodeGen/SelectOptimize.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectOptimize.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/SelectOptimize.cpp b/llvm/lib/CodeGen/SelectOptimize.cpp index bfc49dd..57488a9 100644 --- a/llvm/lib/CodeGen/SelectOptimize.cpp +++ b/llvm/lib/CodeGen/SelectOptimize.cpp @@ -512,7 +512,7 @@ static Value *getTrueOrFalseValue( CBO->setOperand(OtherIdx, isTrue ? OptSelects[IV].first : OptSelects[IV].second); } - CBO->insertBefore(B->getTerminator()); + CBO->insertBefore(B->getTerminator()->getIterator()); return CBO; } @@ -637,7 +637,7 @@ void SelectOptimizeImpl::convertProfitableSIGroups(SelectGroups &ProfSIGroups) { } auto InsertionPoint = EndBlock->getFirstInsertionPt(); for (auto *DI : SinkInstrs) - DI->moveBeforePreserving(&*InsertionPoint); + DI->moveBeforePreserving(InsertionPoint); // Duplicate implementation for DbgRecords, the non-instruction debug-info // format. Helper lambda for moving DbgRecords to the end block. @@ -675,7 +675,7 @@ void SelectOptimizeImpl::convertProfitableSIGroups(SelectGroups &ProfSIGroups) { TrueBranch = BranchInst::Create(EndBlock, TrueBlock); TrueBranch->setDebugLoc(LastSI.getI()->getDebugLoc()); for (Instruction *TrueInst : TrueSlicesInterleaved) - TrueInst->moveBefore(TrueBranch); + TrueInst->moveBefore(TrueBranch->getIterator()); } if (!FalseSlicesInterleaved.empty() || HasSelectLike(ASI, false)) { FalseBlock = @@ -684,7 +684,7 @@ void SelectOptimizeImpl::convertProfitableSIGroups(SelectGroups &ProfSIGroups) { FalseBranch = BranchInst::Create(EndBlock, FalseBlock); FalseBranch->setDebugLoc(LastSI.getI()->getDebugLoc()); for (Instruction *FalseInst : FalseSlicesInterleaved) - FalseInst->moveBefore(FalseBranch); + FalseInst->moveBefore(FalseBranch->getIterator()); } // If there was nothing to sink, then arbitrarily choose the 'false' side // for a new input value to the PHI. |