From efc6b16e4ba24d7624b27642a00a74208823368c Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 25 Jan 2011 23:27:42 +0000 Subject: Provide an interface to transfer SDDbgValue from one SDNode to another. llvm-svn: 124245 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp') diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f6aea1f..e751e22 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -5424,6 +5424,23 @@ void SelectionDAG::AddDbgValue(SDDbgValue *DB, SDNode *SD, bool isParameter) { SD->setHasDebugValue(true); } +/// TransferDbgValues - Transfer SDDbgValues. +void SelectionDAG::TransferDbgValues(SDValue From, SDValue To) { + if (From == To || !From.getNode()->getHasDebugValue()) + return; + SDNode *FromNode = From.getNode(); + SDNode *ToNode = To.getNode(); + SmallVector &DVs = GetDbgValues(FromNode); + DbgInfo->removeSDDbgValues(FromNode); + for (SmallVector::iterator I = DVs.begin(), E = DVs.end(); + I != E; ++I) { + if ((*I)->getKind() == SDDbgValue::SDNODE) { + AddDbgValue(*I, ToNode, false); + (*I)->setSDNode(ToNode, To.getResNo()); + } + } +} + //===----------------------------------------------------------------------===// // SDNode Class //===----------------------------------------------------------------------===// -- cgit v1.1