forked from OSchip/llvm-project
[modules] Don't invent a module cache path unless implicit module builds are enabled.
llvm-svn: 263970
This commit is contained in:
parent
92339e888f
commit
8d83d6db7c
|
@ -5016,28 +5016,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
if (!Args.hasFlag(options::OPT_fimplicit_modules,
|
||||
options::OPT_fno_implicit_modules)) {
|
||||
CmdArgs.push_back("-fno-implicit-modules");
|
||||
}
|
||||
|
||||
// -fmodule-name specifies the module that is currently being built (or
|
||||
// used for header checking by -fmodule-maps).
|
||||
Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ);
|
||||
|
||||
// -fmodule-map-file can be used to specify files containing module
|
||||
// definitions.
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file);
|
||||
|
||||
// -fmodule-file can be used to specify files containing precompiled modules.
|
||||
if (HaveModules)
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file);
|
||||
else
|
||||
Args.ClaimAllArgs(options::OPT_fmodule_file);
|
||||
|
||||
// -fmodule-cache-path specifies where our implicitly-built module files
|
||||
// should be written.
|
||||
SmallString<128> Path;
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path))
|
||||
Path = A->getValue();
|
||||
if (HaveModules) {
|
||||
} else if (HaveModules) {
|
||||
// -fmodule-cache-path specifies where our implicitly-built module files
|
||||
// should be written.
|
||||
SmallString<128> Path;
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path))
|
||||
Path = A->getValue();
|
||||
if (C.isForDiagnostics()) {
|
||||
// When generating crash reports, we want to emit the modules along with
|
||||
// the reproduction sources, so we ignore any provided module path.
|
||||
|
@ -5056,6 +5040,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back(Args.MakeArgString(Path));
|
||||
}
|
||||
|
||||
// -fmodule-name specifies the module that is currently being built (or
|
||||
// used for header checking by -fmodule-maps).
|
||||
Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ);
|
||||
|
||||
// -fmodule-map-file can be used to specify files containing module
|
||||
// definitions.
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file);
|
||||
|
||||
// -fmodule-file can be used to specify files containing precompiled modules.
|
||||
if (HaveModules)
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file);
|
||||
else
|
||||
Args.ClaimAllArgs(options::OPT_fmodule_file);
|
||||
|
||||
// When building modules and generating crashdumps, we need to dump a module
|
||||
// dependency VFS alongside the output.
|
||||
if (HaveModules && C.isForDiagnostics()) {
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
// RUN: rm -rf %t
|
||||
|
||||
// RUN: %clang -x c++ -std=c++11 -fmodules -fno-implicit-modules /dev/null -### \
|
||||
// RUN: 2>&1 | FileCheck --check-prefix=CHECK-NO-MODULE-CACHE %s
|
||||
// CHECK-NO-MODULE-CACHE-NOT: -fmodules-cache-path
|
||||
|
||||
// Produce an error if a module is needed, but not found.
|
||||
// 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 \
|
||||
|
|
Loading…
Reference in New Issue