summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-20 02:56:57 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-20 02:56:57 +0000
commit03e0583a2d02519a21d23cb0fb0da457c325f09d (patch)
tree440a170ca87f4df75c4152b464147b815ba8f273 /llvm/lib/Transforms/Utils
parent8a07e7f657588791d308ebd712c1241edf499dd3 (diff)
downloadbcm5719-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.cpp36
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);
OpenPOWER on IntegriCloud