IRGen: get metadata symbol of class __StaticArrayStorage the correct way

Fixes an unresolved symbol error when building the stdlib on some platforms.

rdar://119991570
This commit is contained in:
Erik Eckstein
2024-01-04 11:36:41 +01:00
parent 6f3eeb5e91
commit ded1b6ea8c
3 changed files with 27 additions and 7 deletions

View File

@@ -2046,8 +2046,23 @@ bool IRGenModule::canMakeStaticObjectsReadOnly() {
if (!Triple.isOSDarwin())
return false;
return getAvailabilityContext().isContainedIn(
Context.getStaticReadOnlyArraysAvailability());
if (!getAvailabilityContext().isContainedIn(Context.getStaticReadOnlyArraysAvailability()))
return false;
if (!getStaticArrayStorageDecl())
return false;
return true;
}
ClassDecl *IRGenModule::getStaticArrayStorageDecl() {
SmallVector<ValueDecl *, 1> results;
Context.lookupInSwiftModule("__StaticArrayStorage", results);
if (results.size() != 1)
return nullptr;
return dyn_cast<ClassDecl>(results[0]);
}
void IRGenerator::addGenModule(SourceFile *SF, IRGenModule *IGM) {