[PATCH] D133303: [DebugInfo] Fix minor debug info bug in deleteDeadLoop
Orlando Cazalet-Hyams via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 5 07:34:40 PDT 2022
Orlando created this revision.
Orlando added reviewers: StephenTozer, jryans, djtodoro.
Orlando added a project: debug-info.
Herald added a subscriber: hiraditya.
Herald added a project: All.
Orlando requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Using a `DebugVariable` as the set key rather than `std::pair<DIVariable *, DIExpression *>` ensures we don't accidently confuse multiple instances of inlined variables.
I just noticed this while in the area and don't have a test case, but I could probably hand-write one if necessary.
https://reviews.llvm.org/D133303
Files:
llvm/lib/Transforms/Utils/LoopUtils.cpp
Index: llvm/lib/Transforms/Utils/LoopUtils.cpp
===================================================================
--- llvm/lib/Transforms/Utils/LoopUtils.cpp
+++ llvm/lib/Transforms/Utils/LoopUtils.cpp
@@ -598,7 +598,7 @@
}
// Use a map to unique and a vector to guarantee deterministic ordering.
- llvm::SmallDenseSet<std::pair<DIVariable *, DIExpression *>, 4> DeadDebugSet;
+ llvm::SmallDenseSet<DebugVariable, 4> DeadDebugSet;
llvm::SmallVector<DbgVariableIntrinsic *, 4> DeadDebugInst;
if (ExitBlock) {
@@ -627,11 +627,8 @@
auto *DVI = dyn_cast<DbgVariableIntrinsic>(&I);
if (!DVI)
continue;
- auto Key =
- DeadDebugSet.find({DVI->getVariable(), DVI->getExpression()});
- if (Key != DeadDebugSet.end())
+ if (!DeadDebugSet.insert(DebugVariable(DVI)).second)
continue;
- DeadDebugSet.insert({DVI->getVariable(), DVI->getExpression()});
DeadDebugInst.push_back(DVI);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133303.457992.patch
Type: text/x-patch
Size: 988 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220905/4799a209/attachment.bin>
More information about the llvm-commits
mailing list