IR: Return unique_ptr from MDNode::getTemporary()
[oota-llvm.git] / lib / Transforms / Utils / ValueMapper.cpp
index 477fba42412e407183eddaec0401d4fe129e7f07..528bf373fffaff65cdde49d20c70bf4916e28021 100644 (file)
@@ -249,8 +249,7 @@ static Metadata *mapDistinctNode(const UniquableMDNode *Node,
 
   // In general we need a dummy node, since whether the operands are null can
   // affect the size of the node.
-  std::unique_ptr<MDNodeFwdDecl> Dummy(
-      MDNode::getTemporary(Node->getContext(), None));
+  auto Dummy = MDTuple::getTemporary(Node->getContext(), None);
   mapToMetadata(VM, Node, Dummy.get());
   Metadata *NewMD = cloneMDNode(Node, VM, Flags, TypeMapper, Materializer,
                                 /* IsDistinct */ true);
@@ -282,17 +281,16 @@ static Metadata *mapUniquedNode(const UniquableMDNode *Node,
                                  ValueToValueMapTy &VM, RemapFlags Flags,
                                  ValueMapTypeRemapper *TypeMapper,
                                  ValueMaterializer *Materializer) {
-  assert(!Node->isDistinct() && "Expected uniqued node");
+  assert(Node->isUniqued() && "Expected uniqued node");
 
   // Create a dummy node in case we have a metadata cycle.
-  MDNodeFwdDecl *Dummy = MDNode::getTemporary(Node->getContext(), None);
-  mapToMetadata(VM, Node, Dummy);
+  auto Dummy = MDTuple::getTemporary(Node->getContext(), None);
+  mapToMetadata(VM, Node, Dummy.get());
 
   // Check all operands to see if any need to be remapped.
   if (!shouldRemapUniquedNode(Node, VM, Flags, TypeMapper, Materializer)) {
     // Use an identity mapping.
     mapToSelf(VM, Node);
-    MDNode::deleteTemporary(Dummy);
     return const_cast<Metadata *>(static_cast<const Metadata *>(Node));
   }
 
@@ -300,7 +298,6 @@ static Metadata *mapUniquedNode(const UniquableMDNode *Node,
   Metadata *NewMD = cloneMDNode(Node, VM, Flags, TypeMapper, Materializer,
                                 /* IsDistinct */ false);
   Dummy->replaceAllUsesWith(NewMD);
-  MDNode::deleteTemporary(Dummy);
   return mapToMetadata(VM, Node, NewMD);
 }