diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/ValueMapper.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index 7c676749fbc..20ce27823fb 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -192,11 +192,11 @@ static TempMDLocation cloneMDLocation(const MDLocation *Node) { Node->getInlinedAt()); } -static TempUniquableMDNode cloneMDNode(const UniquableMDNode *Node) { +static TempMDNode cloneMDNode(const MDNode *Node) { switch (Node->getMetadataID()) { default: - llvm_unreachable("Invalid UniquableMDNode subclass"); -#define HANDLE_UNIQUABLE_LEAF(CLASS) \ + 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" @@ -209,9 +209,8 @@ static TempUniquableMDNode cloneMDNode(const UniquableMDNode *Node) { /// Assumes that \c NewNode is already a clone of \c OldNode. /// /// \pre \c NewNode is a clone of \c OldNode. -static bool remap(const UniquableMDNode *OldNode, UniquableMDNode *NewNode, - ValueToValueMapTy &VM, RemapFlags Flags, - ValueMapTypeRemapper *TypeMapper, +static bool remap(const MDNode *OldNode, MDNode *NewNode, ValueToValueMapTy &VM, + RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer) { assert(OldNode->getNumOperands() == NewNode->getNumOperands() && "Expected nodes to match"); @@ -240,13 +239,13 @@ static bool remap(const UniquableMDNode *OldNode, UniquableMDNode *NewNode, /// \brief Map a distinct MDNode. /// /// Distinct nodes are not uniqued, so they must always recreated. -static Metadata *mapDistinctNode(const UniquableMDNode *Node, - ValueToValueMapTy &VM, RemapFlags Flags, +static Metadata *mapDistinctNode(const MDNode *Node, ValueToValueMapTy &VM, + RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer) { assert(Node->isDistinct() && "Expected distinct node"); - UniquableMDNode *NewMD = MDNode::replaceWithDistinct(cloneMDNode(Node)); + MDNode *NewMD = MDNode::replaceWithDistinct(cloneMDNode(Node)); remap(Node, NewMD, VM, Flags, TypeMapper, Materializer); return NewMD; } @@ -254,8 +253,8 @@ static Metadata *mapDistinctNode(const UniquableMDNode *Node, /// \brief Map a uniqued MDNode. /// /// Uniqued nodes may not need to be recreated (they may map to themselves). -static Metadata *mapUniquedNode(const UniquableMDNode *Node, - ValueToValueMapTy &VM, RemapFlags Flags, +static Metadata *mapUniquedNode(const MDNode *Node, ValueToValueMapTy &VM, + RemapFlags Flags, ValueMapTypeRemapper *TypeMapper, ValueMaterializer *Materializer) { assert(Node->isUniqued() && "Expected uniqued node"); @@ -304,7 +303,7 @@ static Metadata *MapMetadataImpl(const Metadata *MD, ValueToValueMapTy &VM, return nullptr; } - const UniquableMDNode *Node = cast<UniquableMDNode>(MD); + const MDNode *Node = cast<MDNode>(MD); assert(Node->isResolved() && "Unexpected unresolved node"); // If this is a module-level metadata and we know that nothing at the @@ -323,8 +322,9 @@ Metadata *llvm::MapMetadata(const Metadata *MD, ValueToValueMapTy &VM, ValueMaterializer *Materializer) { Metadata *NewMD = MapMetadataImpl(MD, VM, Flags, TypeMapper, Materializer); if (NewMD && NewMD != MD) - if (auto *N = dyn_cast<UniquableMDNode>(NewMD)) - N->resolveCycles(); + if (auto *N = dyn_cast<MDNode>(NewMD)) + if (!N->isResolved()) + N->resolveCycles(); return NewMD; } |