[NFC][Cloning] Simplify the flow in FindDebugInfoToIdentityMap (#129144)

Summary:
The new flow should make it more clear what is happening in cases of
Different of Cloned modules.

Test Plan:
ninja check-llvm-unit check-llvm
This commit is contained in:
Artem Pianykh 2025-03-09 17:49:24 +00:00 committed by GitHub
parent a7d5b3f711
commit df570dadcb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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<DILocalScope>(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<DILocalScope>(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;
}