aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
diff options
context:
space:
mode:
authorStephen Tozer <Stephen.Tozer@Sony.com>2021-04-08 17:56:25 +0100
committerStephen Tozer <Stephen.Tozer@Sony.com>2021-04-12 12:51:29 +0100
commitaa3e78a59fdf3b211be72f1b3221af831665e67d (patch)
tree0c58058fe114fbf2be6df888797abf7f05353a1d /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
parentdff922f39b9bf49b243f6f00c7c9a2e3de77e20e (diff)
downloadllvm-aa3e78a59fdf3b211be72f1b3221af831665e67d.zip
llvm-aa3e78a59fdf3b211be72f1b3221af831665e67d.tar.gz
llvm-aa3e78a59fdf3b211be72f1b3221af831665e67d.tar.bz2
Reapply "[DebugInfo] Correctly track SDNode dependencies for list debug values"
Fixed memory leak error by using BumpAllocator for SDDbgValue arrays. This reverts commit 1b589172bd19b83e8137185ed11f50bba06e8766.
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index a9de603..9e14e85 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -1302,8 +1302,8 @@ bool SelectionDAGBuilder::handleDebugValue(ArrayRef<const Value *> Values,
bool IsVariadic) {
if (Values.empty())
return true;
- SDDbgValue::LocOpVector LocationOps;
- SDDbgValue::SDNodeVector Dependencies;
+ SmallVector<SDDbgOperand> LocationOps;
+ SmallVector<SDNode *> Dependencies;
for (const Value *V : Values) {
// Constant value.
if (isa<ConstantInt>(V) || isa<ConstantFP>(V) || isa<UndefValue>(V) ||
@@ -1331,7 +1331,6 @@ bool SelectionDAGBuilder::handleDebugValue(ArrayRef<const Value *> Values,
// Only emit func arg dbg value for non-variadic dbg.values for now.
if (!IsVariadic && EmitFuncArgumentDbgValue(V, Var, Expr, dl, false, N))
return true;
- Dependencies.push_back(N.getNode());
if (auto *FISDN = dyn_cast<FrameIndexSDNode>(N.getNode())) {
// Construct a FrameIndexDbgValue for FrameIndexSDNodes so we can
// describe stack slot locations.
@@ -1343,6 +1342,7 @@ bool SelectionDAGBuilder::handleDebugValue(ArrayRef<const Value *> Values,
// dbg.value(i32* %px, !"int x", !DIExpression(DW_OP_deref))
//
// Both describe the direct values of their associated variables.
+ Dependencies.push_back(N.getNode());
LocationOps.emplace_back(SDDbgOperand::fromFrameIdx(FISDN->getIndex()));
continue;
}