Serialization: Auto-linking recursively walks modules imported from -sil-serialize-all modules

This commit is contained in:
Slava Pestov
2016-03-31 12:54:01 -07:00
parent 56c67f9eaa
commit 49c54870c1
249 changed files with 20 additions and 1727 deletions

View File

@@ -423,15 +423,24 @@ void SerializedASTFile::getImportedModules(
File.getImportedModules(imports, filter);
}
void SerializedASTFile::collectLinkLibrariesFromImports(
Module::LinkLibraryCallback callback) const {
llvm::SmallVector<Module::ImportedModule, 8> Imports;
File.getImportedModules(Imports, Module::ImportFilter::All);
for (auto Import : Imports)
Import.second->collectLinkLibraries(callback);
}
void SerializedASTFile::collectLinkLibraries(
Module::LinkLibraryCallback callback) const {
if (isSIB()) {
llvm::SmallVector<Module::ImportedModule, 8> Imports;
File.getImportedModules(Imports, Module::ImportFilter::All);
for (auto Import : Imports)
Import.second->collectLinkLibraries(callback);
collectLinkLibrariesFromImports(callback);
} else {
if (File.getAssociatedModule()->getResilienceStrategy()
== ResilienceStrategy::Fragile) {
collectLinkLibrariesFromImports(callback);
}
File.collectLinkLibraries(callback);
}
}