[llvm] [DebugInfo][RemoveDIs] Support maintaining DPValues in CodeGenPrepare (PR #73660)
Orlando Cazalet-Hyams via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 29 03:32:58 PST 2023
================
@@ -2829,34 +2836,46 @@ class TypePromotionTransaction {
Instruction *PrevInst;
BasicBlock *BB;
} Point;
+ std::optional<DPValue::self_iterator> beforeDPValue = std::nullopt;
/// Remember whether or not the instruction had a previous instruction.
bool HasPrevInstruction;
public:
/// Record the position of \p Inst.
InsertionHandler(Instruction *Inst) {
- BasicBlock::iterator It = Inst->getIterator();
- HasPrevInstruction = (It != (Inst->getParent()->begin()));
- if (HasPrevInstruction)
- Point.PrevInst = &*--It;
- else
- Point.BB = Inst->getParent();
+ HasPrevInstruction = (Inst != &*(Inst->getParent()->begin()));
+ BasicBlock *BB = Inst->getParent();
+
+ // Record where we would have to re-insert the instruction in the sequence
+ // of DPValues, if we ended up reinserting.
+ if (BB->IsNewDbgInfoFormat) {
+ DPMarker *DPM = BB->createMarker(Inst);
+ beforeDPValue = DPM->getReinsertionPosition();
----------------
OCHyams wrote:
Looking at the implementation of `DPMarker::getReinsertionPosition`, it looks like creating a marker just for this call is possibly a waste - I don't think any Marker-specific state is used in `getReinsertPosition`? I might be reading it wrong -- either way, I'll drop a comment on the other review.
https://github.com/llvm/llvm-project/pull/73660
More information about the llvm-commits
mailing list