forked from OSchip/llvm-project
[modules] Produce an error if -cc1 wants to implicitly build a module and no
module cache has been provided, rather than creating one in the current directory. llvm-svn: 242819
This commit is contained in:
parent
bd05101e67
commit
d520a250b6
|
@ -372,9 +372,8 @@ void CompilerInstance::createPreprocessor(TranslationUnitKind TUKind) {
|
|||
std::string CompilerInstance::getSpecificModuleCachePath() {
|
||||
// Set up the module path, including the hash for the
|
||||
// module-creation options.
|
||||
SmallString<256> SpecificModuleCache(
|
||||
getHeaderSearchOpts().ModuleCachePath);
|
||||
if (!getHeaderSearchOpts().DisableModuleHash)
|
||||
SmallString<256> SpecificModuleCache(getHeaderSearchOpts().ModuleCachePath);
|
||||
if (!SpecificModuleCache.empty() && !getHeaderSearchOpts().DisableModuleHash)
|
||||
llvm::sys::path::append(SpecificModuleCache,
|
||||
getInvocation().getModuleHash());
|
||||
return SpecificModuleCache.str();
|
||||
|
@ -1406,17 +1405,17 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
|
|||
|
||||
auto Override = ModuleFileOverrides.find(ModuleName);
|
||||
bool Explicit = Override != ModuleFileOverrides.end();
|
||||
if (!Explicit && !getLangOpts().ImplicitModules) {
|
||||
|
||||
std::string ModuleFileName =
|
||||
Explicit ? Override->second
|
||||
: PP->getHeaderSearchInfo().getModuleFileName(Module);
|
||||
if (ModuleFileName.empty()) {
|
||||
getDiagnostics().Report(ModuleNameLoc, diag::err_module_build_disabled)
|
||||
<< ModuleName;
|
||||
ModuleBuildFailed = true;
|
||||
return ModuleLoadResult();
|
||||
}
|
||||
|
||||
std::string ModuleFileName =
|
||||
Explicit ? Override->second
|
||||
: PP->getHeaderSearchInfo().getModuleFileName(Module);
|
||||
|
||||
// If we don't already have an ASTReader, create one now.
|
||||
if (!ModuleManager)
|
||||
createModuleManager();
|
||||
|
|
|
@ -127,8 +127,9 @@ std::string HeaderSearch::getModuleFileName(Module *Module) {
|
|||
|
||||
std::string HeaderSearch::getModuleFileName(StringRef ModuleName,
|
||||
StringRef ModuleMapPath) {
|
||||
// If we don't have a module cache path, we can't do anything.
|
||||
if (ModuleCachePath.empty())
|
||||
// If we don't have a module cache path or aren't supposed to use one, we
|
||||
// can't do anything.
|
||||
if (ModuleCachePath.empty() || !LangOpts.ImplicitModules)
|
||||
return std::string();
|
||||
|
||||
SmallString<256> Result(ModuleCachePath);
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \
|
||||
// RUN: -fmodule-map-file=%S/Inputs/no-implicit-builds/b.modulemap \
|
||||
// RUN: -fno-implicit-modules %s -verify
|
||||
//
|
||||
// Same thing if we're running -cc1 and no module cache path has been provided.
|
||||
// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps \
|
||||
// RUN: -fmodule-map-file=%S/Inputs/no-implicit-builds/b.modulemap \
|
||||
// RUN: %s -verify
|
||||
|
||||
// Compile the module and put it into the cache.
|
||||
// RUN: %clang_cc1 -x c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \
|
||||
|
|
Loading…
Reference in New Issue