From 03e0583a2d02519a21d23cb0fb0da457c325f09d Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Tue, 20 Jan 2015 02:56:57 +0000 Subject: IR: Move MDNode clone() methods from ValueMapper to MDNode, NFC Now that the clone methods used by `MapMetadata()` don't do any remapping (and return a temporary), they make more sense as member functions on `MDNode` (and subclasses). llvm-svn: 226541 --- llvm/lib/Transforms/Utils/ValueMapper.cpp | 36 ++----------------------------- 1 file changed, 2 insertions(+), 34 deletions(-) (limited to 'llvm/lib/Transforms/Utils/ValueMapper.cpp') diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index cba4677a2b0..db8728e3fa9 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -180,37 +180,6 @@ static Metadata *mapMetadataOp(Metadata *Op, ValueToValueMapTy &VM, return nullptr; } -static TempMDTuple cloneMDTuple(const MDTuple *Node) { - SmallVector Elts; - Elts.append(Node->op_begin(), Node->op_end()); - return MDTuple::getTemporary(Node->getContext(), Elts); -} - -static TempMDLocation cloneMDLocation(const MDLocation *Node) { - return MDLocation::getTemporary(Node->getContext(), Node->getLine(), - Node->getColumn(), Node->getScope(), - Node->getInlinedAt()); -} - -static TempGenericDwarfNode -cloneGenericDwarfNode(const GenericDwarfNode *Node) { - SmallVector DwarfOps; - DwarfOps.append(Node->dwarf_op_begin(), Node->dwarf_op_end()); - return GenericDwarfNode::getTemporary(Node->getContext(), Node->getTag(), - Node->getHeader(), DwarfOps); -} - -static TempMDNode cloneMDNode(const MDNode *Node) { - switch (Node->getMetadataID()) { - default: - llvm_unreachable("Invalid MDNode subclass"); -#define HANDLE_MDNODE_LEAF(CLASS) \ - case Metadata::CLASS##Kind: \ - return clone##CLASS(cast(Node)); -#include "llvm/IR/Metadata.def" - } -} - /// \brief Remap nodes. /// /// Insert \c NewNode in the value map, and then remap \c OldNode's operands. @@ -253,7 +222,7 @@ static Metadata *mapDistinctNode(const MDNode *Node, ValueToValueMapTy &VM, ValueMaterializer *Materializer) { assert(Node->isDistinct() && "Expected distinct node"); - MDNode *NewMD = MDNode::replaceWithDistinct(cloneMDNode(Node)); + MDNode *NewMD = MDNode::replaceWithDistinct(Node->clone()); remap(Node, NewMD, VM, Flags, TypeMapper, Materializer); return NewMD; } @@ -268,8 +237,7 @@ static Metadata *mapUniquedNode(const MDNode *Node, ValueToValueMapTy &VM, assert(Node->isUniqued() && "Expected uniqued node"); // Create a temporary node upfront in case we have a metadata cycle. - auto ClonedMD = cloneMDNode(Node); - + auto ClonedMD = Node->clone(); if (!remap(Node, ClonedMD.get(), VM, Flags, TypeMapper, Materializer)) // No operands changed, so use the identity mapping. return mapToSelf(VM, Node); -- cgit v1.2.3