summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
diff options
context:
space:
mode:
authorDavid Stenberg <david.stenberg@ericsson.com>2019-03-18 11:27:32 +0000
committerDavid Stenberg <david.stenberg@ericsson.com>2019-03-18 11:27:32 +0000
commit8a2e4af7e75021d0d60963f3f42f28d350a1c818 (patch)
tree2a0f0d96a8ceb6891161ef77b6b1242eb8ecbf81 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
parentf92ddfed5a3df21a5c735577ce775f68130ea6e1 (diff)
downloadbcm5719-llvm-8a2e4af7e75021d0d60963f3f42f28d350a1c818.tar.gz
bcm5719-llvm-8a2e4af7e75021d0d60963f3f42f28d350a1c818.zip
[DebugInfo] Ignore bitcasts when lowering stack arg dbg.values
Summary: Look past bitcasts when looking for parameter debug values that are described by frame-index loads in `EmitFuncArgumentDbgValue()`. In the attached test case we would be left with an undef `DBG_VALUE` for the parameter without this patch. A similar fix was done for parameters passed in registers in D13005. This fixes PR40777. Reviewers: aprantl, vsk, jmorse Reviewed By: aprantl Subscribers: bjope, javed.absar, jdoerfert, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D58831 llvm-svn: 356363
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 6a88948ac6b..fb57f5dd2c5 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -5326,12 +5326,14 @@ bool SelectionDAGBuilder::EmitFuncArgumentDbgValue(
}
}
- if (!Op && N.getNode())
+ if (!Op && N.getNode()) {
// Check if frame index is available.
- if (LoadSDNode *LNode = dyn_cast<LoadSDNode>(N.getNode()))
+ SDValue LCandidate = peekThroughBitcasts(N);
+ if (LoadSDNode *LNode = dyn_cast<LoadSDNode>(LCandidate.getNode()))
if (FrameIndexSDNode *FINode =
dyn_cast<FrameIndexSDNode>(LNode->getBasePtr().getNode()))
Op = MachineOperand::CreateFI(FINode->getIndex());
+ }
if (!Op) {
// Check if ValueMap has reg number.
OpenPOWER on IntegriCloud