Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit 4105790

Browse files
committed
Merging r277135:
------------------------------------------------------------------------ r277135 | niravd | 2016-07-29 04:49:32 -0700 (Fri, 29 Jul 2016) | 12 lines Cleanup TransferDbgValues [DAG] Check debug values for invalidation before transferring and mark old debug values invalid when transferring to another SDValue. This fixes PR28613. Reviewers: jyknight, hans, dblaikie, echristo Subscribers: yaron.keren, ismail, llvm-commits Differential Revision: https://reviews.llvm.org/D22858 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@277164 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 53abc28 commit 4105790

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6639,19 +6639,26 @@ void SelectionDAG::TransferDbgValues(SDValue From, SDValue To) {
66396639
SDNode *FromNode = From.getNode();
66406640
SDNode *ToNode = To.getNode();
66416641
ArrayRef<SDDbgValue *> DVs = GetDbgValues(FromNode);
6642+
SmallVector<SDDbgValue *, 2> ClonedDVs;
66426643
for (ArrayRef<SDDbgValue *>::iterator I = DVs.begin(), E = DVs.end();
66436644
I != E; ++I) {
66446645
SDDbgValue *Dbg = *I;
66456646
// Only add Dbgvalues attached to same ResNo.
66466647
if (Dbg->getKind() == SDDbgValue::SDNODE &&
6647-
Dbg->getResNo() == From.getResNo()) {
6648+
Dbg->getSDNode() == From.getNode() &&
6649+
Dbg->getResNo() == From.getResNo() && !Dbg->isInvalidated()) {
6650+
assert(FromNode != ToNode &&
6651+
"Should not transfer Debug Values intranode");
66486652
SDDbgValue *Clone =
66496653
getDbgValue(Dbg->getVariable(), Dbg->getExpression(), ToNode,
66506654
To.getResNo(), Dbg->isIndirect(), Dbg->getOffset(),
66516655
Dbg->getDebugLoc(), Dbg->getOrder());
6652-
AddDbgValue(Clone, ToNode, false);
6656+
ClonedDVs.push_back(Clone);
6657+
Dbg->setIsInvalidated();
66536658
}
66546659
}
6660+
for (SDDbgValue *I : ClonedDVs)
6661+
AddDbgValue(I, ToNode, false);
66556662
}
66566663

66576664
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)