Frontend: add a frontend flag to disable building module from textual interface

This is for testing purposes to ensure prebuilt modules are up to date.

rdar://68770805
This commit is contained in:
Xi Ge
2020-10-05 10:48:07 -07:00
parent 23dc001364
commit 00eb2e9db2
6 changed files with 44 additions and 7 deletions

View File

@@ -859,13 +859,6 @@ class ModuleInterfaceLoaderImpl {
prebuiltCacheDir,
/*serializeDependencyHashes*/false,
trackSystemDependencies);
// Set up a builder if we need to build the module. It'll also set up
// the genericSubInvocation we'll need to use to compute the cache paths.
ModuleInterfaceBuilder builder(
ctx.SourceMgr, ctx.Diags, astDelegate, interfacePath, moduleName, cacheDir,
prebuiltCacheDir,
Opts.disableInterfaceLock, diagnosticLoc,
dependencyTracker);
// Compute the output path if we're loading or emitting a cached module.
llvm::SmallString<256> cachedOutputPath;
@@ -908,6 +901,18 @@ class ModuleInterfaceLoaderImpl {
return std::move(module.moduleBuffer);
}
// If building from interface is disabled, return error.
if (Opts.disableBuildingInterface) {
return std::make_error_code(std::errc::not_supported);
}
// Set up a builder if we need to build the module. It'll also set up
// the genericSubInvocation we'll need to use to compute the cache paths.
ModuleInterfaceBuilder builder(
ctx.SourceMgr, ctx.Diags, astDelegate, interfacePath, moduleName, cacheDir,
prebuiltCacheDir,
Opts.disableInterfaceLock, diagnosticLoc,
dependencyTracker);
std::unique_ptr<llvm::MemoryBuffer> moduleBuffer;