diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp index ca48290cff97..27c7f1b34902 100644 --- a/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -651,10 +651,12 @@ Optional Mapper::mapSimpleMetadata(const Metadata *MD) { if (isa(MD)) return mapToSelf(MD); - if (auto *CMD = dyn_cast(MD)) { - if ((Flags & RF_NoModuleLevelChanges)) - return mapToSelf(MD); + // This is a module-level metadata. If nothing at the module level is + // changing, use an identity mapping. + if ((Flags & RF_NoModuleLevelChanges)) + return mapToSelf(MD); + if (auto *CMD = dyn_cast(MD)) { // Disallow recursion into metadata mapping through mapValue. VM.disableMapMetadata(); Value *MappedV = mapValue(CMD->getValue()); @@ -668,11 +670,6 @@ Optional Mapper::mapSimpleMetadata(const Metadata *MD) { assert(isa(MD) && "Expected a metadata node"); - // If this is a module-level metadata and we know that nothing at the - // module level is changing, then use an identity mapping. - if (Flags & RF_NoModuleLevelChanges) - return mapToSelf(MD); - return None; }