DebugInfo: Use TempMDNode in DIDescriptor::replaceAllUsesWith()
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Sat, 28 Feb 2015 23:48:02 +0000 (23:48 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Sat, 28 Feb 2015 23:48:02 +0000 (23:48 +0000)
commit9c3b89448a0b7c6b122e80b36d287317e75d6ac3
tree9bafc9930696c88e6827b974b5271bfe670a7950
parentdb962e2afb6d23acb8c4509b0ee431eb267e7a85
DebugInfo: Use TempMDNode in DIDescriptor::replaceAllUsesWith()

Start using `TempMDNode` in `DIDescriptor::replaceAllUsesWith()`
(effectively `std::unique_ptr<MDNode, MDNode::deleteTemporary>`).

Besides making ownership more explicit, this prepares for when
`DIDescriptor` refers to nodes that are *not* `MDTuple`.  The old logic
for "replacing" a node with itself used `MDNode::get()` to return a new
(uniqued) `MDTuple`, while the new logic just defers to
`MDNode::replaceWithUniqued()` (which also typically saves an allocation
and RAUW traffic by mutating the temporary in place).

llvm-svn: 230879
llvm/lib/IR/DebugInfo.cpp