mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
IRGen/SIL: Fix IR linkage computation for inlined function references from modules imported @_weakLinked.
Include the parent `ModuleDecl` when serializing a `SILFunction` so that it is available on deserialized functions even though the full `DeclContext` is not present. With the parent module always available we can reliably compute whether the `SILFunction` comes from a module that was imported `@_weakLinked`. Serialize the `DeclContext` member of `SILFunction` so that it can be used to look up the module that a function belongs to in order to compute weak import status. Resolves rdar://98521248
This commit is contained in:
@@ -2663,10 +2663,9 @@ bool ModuleDecl::isImportedAsSPI(Identifier spiGroup,
|
||||
return importedSPIGroups.count(spiGroup);
|
||||
}
|
||||
|
||||
bool ModuleDecl::isImportedAsWeakLinked(const Decl *targetDecl) const {
|
||||
const auto *declaringModule = targetDecl->getModuleContext();
|
||||
bool ModuleDecl::isImportedAsWeakLinked(const ModuleDecl *module) const {
|
||||
for (auto file : getFiles()) {
|
||||
if (file->importsModuleAsWeakLinked(declaringModule))
|
||||
if (file->importsModuleAsWeakLinked(module))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user