diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-01-20 02:56:57 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-01-20 02:56:57 +0000 |
commit | 03e0583a2d02519a21d23cb0fb0da457c325f09d (patch) | |
tree | 440a170ca87f4df75c4152b464147b815ba8f273 /llvm/lib/Transforms/Utils | |
parent | 8a07e7f657588791d308ebd712c1241edf499dd3 (diff) | |
download | bcm5719-llvm-03e0583a2d02519a21d23cb0fb0da457c325f09d.tar.gz bcm5719-llvm-03e0583a2d02519a21d23cb0fb0da457c325f09d.zip |
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
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r-- | llvm/lib/Transforms/Utils/ValueMapper.cpp | 36 |
1 files changed, 2 insertions, 34 deletions
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<Metadata *, 4> 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<Metadata *, 4> 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<CLASS>(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); |