summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/ValueMapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/ValueMapper.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp
index a5981115584..b18af19a981 100644
--- a/llvm/lib/Transforms/Utils/ValueMapper.cpp
+++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp
@@ -434,7 +434,8 @@ bool MDNodeMapper::mapOperand(const Metadata *Op) {
return false;
if (Optional<Metadata *> MappedOp = M.mapSimpleMetadata(Op)) {
- assert(M.VM.getMappedMD(Op) && "Expected result to be memoized");
+ assert((isa<MDString>(Op) || M.VM.getMappedMD(Op)) &&
+ "Expected result to be memoized");
return *MappedOp != Op;
}
@@ -448,6 +449,9 @@ Optional<Metadata *> MDNodeMapper::getMappedOp(const Metadata *Op) const {
if (Optional<Metadata *> MappedOp = M.VM.getMappedMD(Op))
return *MappedOp;
+ if (isa<MDString>(Op))
+ return const_cast<Metadata *>(Op);
+
return None;
}
@@ -649,7 +653,7 @@ Optional<Metadata *> Mapper::mapSimpleMetadata(const Metadata *MD) {
return *NewMD;
if (isa<MDString>(MD))
- return mapToSelf(MD);
+ return const_cast<Metadata *>(MD);
// This is a module-level metadata. If nothing at the module level is
// changing, use an identity mapping.
OpenPOWER on IntegriCloud