diff options
author | Devang Patel <dpatel@apple.com> | 2011-01-25 23:27:42 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2011-01-25 23:27:42 +0000 |
commit | a2e868d34ccfed46310e98338ded6a74b2b01308 (patch) | |
tree | 441542dd6fda57f855b743a90bb5276988a8ef25 /lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | e13359732addeaa2682aaf96e293d6d8c4f8b36c (diff) |
Provide an interface to transfer SDDbgValue from one SDNode to another.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124245 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f6aea1f795..e751e22a81 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/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<SDDbgValue*,2> &DVs = GetDbgValues(FromNode); + DbgInfo->removeSDDbgValues(FromNode); + for (SmallVector<SDDbgValue *, 2>::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 //===----------------------------------------------------------------------===// |