Dependencies Scanner: report compiled Swift module paths if they are available

For the explicit module mode, swift-driver uses -compile-module-from-interface to
generate modules from interfaces found by the dependency scanner. However, we don't
need to build the binary module if up-to-date modules are available, either adjacent
to the interface file or in the prebuilt module cache directory. This patch teaches
dependencies scanner to report these ready-to-use binary modules.
This commit is contained in:
Xi Ge
2020-06-30 12:36:54 -07:00
parent d2bf4473ae
commit 84dd4db0b1
13 changed files with 165 additions and 71 deletions

View File

@@ -366,13 +366,14 @@ llvm::ErrorOr<ModuleDependencies> SerializedModuleLoaderBase::scanModuleFile(
// Load the module file without validation.
std::unique_ptr<ModuleFile> loadedModuleFile;
bool isFramework = false;
serialization::ExtendedValidationInfo extInfo;
serialization::ValidationInfo loadInfo =
ModuleFile::load(modulePath.str(),
std::move(moduleBuf.get()),
nullptr,
nullptr,
isFramework, loadedModuleFile,
nullptr);
&extInfo);
// Map the set of dependencies over to the "module dependencies".
auto dependencies = ModuleDependencies::forSwiftModule(modulePath.str());