mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Stabilize and simplify SIL linkage and serialization
The main point of this change is to make sure that a shared function always has a body: both, in the optimizer pipeline and in the swiftmodule file. This is important because the compiler always needs to emit code for a shared function. Shared functions cannot be referenced from outside the module. In several corner cases we missed to maintain this invariant which resulted in unresolved-symbol linker errors. As side-effect of this change we can drop the shared_external SIL linkage and the IsSerializable flag, which simplifies the serialization and linkage concept.
This commit is contained in:
@@ -693,7 +693,7 @@ ApplyInst *StringOptimization::createStringInit(StringRef str,
|
||||
return nullptr;
|
||||
|
||||
auto Mangled = SILDeclRef(makeUTF8Decl, SILDeclRef::Kind::Allocator).mangle();
|
||||
makeUTF8Func = module.findFunction(Mangled, SILLinkage::PublicExternal);
|
||||
makeUTF8Func = module.loadFunction(Mangled, SILModule::LinkingMode::LinkAll);
|
||||
if (!makeUTF8Func)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user