diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp index 9267930027c04..7a309f7390c77 100644 --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -160,32 +160,32 @@ MetadataSetTy llvm::FindDebugInfoToIdentityMap(CloneFunctionChangeType Changes, DebugInfoFinder &DIFinder, DISubprogram *SPClonedWithinModule) { + if (Changes >= CloneFunctionChangeType::DifferentModule) + return {}; + + if (DIFinder.subprogram_count() == 0) + assert(!SPClonedWithinModule && + "Subprogram should be in DIFinder->subprogram_count()..."); + MetadataSetTy MD; - if (Changes < CloneFunctionChangeType::DifferentModule && - DIFinder.subprogram_count() > 0) { - // Avoid cloning types, compile units, and (other) subprograms. - for (DISubprogram *ISP : DIFinder.subprograms()) { - if (ISP != SPClonedWithinModule) - MD.insert(ISP); - } + // Avoid cloning types, compile units, and (other) subprograms. + for (DISubprogram *ISP : DIFinder.subprograms()) + if (ISP != SPClonedWithinModule) + MD.insert(ISP); - // If a subprogram isn't going to be cloned skip its lexical blocks as well. - for (DIScope *S : DIFinder.scopes()) { - auto *LScope = dyn_cast(S); - if (LScope && LScope->getSubprogram() != SPClonedWithinModule) - MD.insert(S); - } + // If a subprogram isn't going to be cloned skip its lexical blocks as well. + for (DIScope *S : DIFinder.scopes()) { + auto *LScope = dyn_cast(S); + if (LScope && LScope->getSubprogram() != SPClonedWithinModule) + MD.insert(S); + } for (DICompileUnit *CU : DIFinder.compile_units()) MD.insert(CU); for (DIType *Type : DIFinder.types()) MD.insert(Type); - } else { - assert(!SPClonedWithinModule && - "Subprogram should be in DIFinder->subprogram_count()..."); - } return MD; }