mirror of https://github.com/microsoft/clang.git
[Modules] Turn on system header validation for implicit modules
After r300027 implicit builds might fail when updating the SDK on darwin. Make validation of system headers default when implicit modules is on and allow modules to be rebuild when system headers change. rdar://problem/19767523 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@330240 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1c97f39bbb
commit
93dfb9eb04
|
@ -1217,6 +1217,8 @@ def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagn
|
|||
def fmodules_validate_system_headers : Flag<["-"], "fmodules-validate-system-headers">,
|
||||
Group<i_Group>, Flags<[CC1Option]>,
|
||||
HelpText<"Validate the system headers that a module depends on when loading the module">;
|
||||
def fno_modules_validate_system_headers : Flag<["-"], "fno-modules-validate-system-headers">,
|
||||
Group<i_Group>, Flags<[DriverOption]>;
|
||||
def fmodules : Flag <["-"], "fmodules">, Group<f_Group>,
|
||||
Flags<[DriverOption, CC1Option]>,
|
||||
HelpText<"Enable the 'modules' language feature">;
|
||||
|
|
|
@ -2546,11 +2546,13 @@ static void RenderModulesOptions(Compilation &C, const Driver &D,
|
|||
CmdArgs.push_back("-fmodules-strict-decluse");
|
||||
|
||||
// -fno-implicit-modules turns off implicitly compiling modules on demand.
|
||||
bool ImplicitModules = false;
|
||||
if (!Args.hasFlag(options::OPT_fimplicit_modules,
|
||||
options::OPT_fno_implicit_modules, HaveClangModules)) {
|
||||
if (HaveModules)
|
||||
CmdArgs.push_back("-fno-implicit-modules");
|
||||
} else if (HaveModules) {
|
||||
ImplicitModules = true;
|
||||
// -fmodule-cache-path specifies where our implicitly-built module files
|
||||
// should be written.
|
||||
SmallString<128> Path;
|
||||
|
@ -2657,7 +2659,11 @@ static void RenderModulesOptions(Compilation &C, const Driver &D,
|
|||
options::OPT_fmodules_validate_once_per_build_session);
|
||||
}
|
||||
|
||||
Args.AddLastArg(CmdArgs, options::OPT_fmodules_validate_system_headers);
|
||||
if (Args.hasFlag(options::OPT_fmodules_validate_system_headers,
|
||||
options::OPT_fno_modules_validate_system_headers,
|
||||
ImplicitModules))
|
||||
CmdArgs.push_back("-fmodules-validate-system-headers");
|
||||
|
||||
Args.AddLastArg(CmdArgs, options::OPT_fmodules_disable_diagnostic_validation);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,9 +30,15 @@
|
|||
// RUN: %clang -### %s 2>&1 | FileCheck -check-prefix=MODULES_VALIDATE_SYSTEM_HEADERS_DEFAULT %s
|
||||
// MODULES_VALIDATE_SYSTEM_HEADERS_DEFAULT-NOT: -fmodules-validate-system-headers
|
||||
|
||||
// RUN: %clang -fmodules -fsyntax-only -### %s 2>&1 | FileCheck -check-prefix=MODULES_VALIDATE_SYSTEM_HEADERS_DEFAULT_MOD %s
|
||||
// MODULES_VALIDATE_SYSTEM_HEADERS_DEFAULT_MOD: -fmodules-validate-system-headers
|
||||
|
||||
// RUN: %clang -fmodules-validate-system-headers -### %s 2>&1 | FileCheck -check-prefix=MODULES_VALIDATE_SYSTEM_HEADERS %s
|
||||
// MODULES_VALIDATE_SYSTEM_HEADERS: -fmodules-validate-system-headers
|
||||
|
||||
// RUN: %clang -fno-modules-validate-system-headers -### %s 2>&1 | FileCheck -check-prefix=MODULES_VALIDATE_SYSTEM_HEADERS_NOSYSVALID %s
|
||||
// MODULES_VALIDATE_SYSTEM_HEADERS_NOSYSVALID-NOT: -fmodules-validate-system-headers
|
||||
|
||||
// RUN: %clang -### %s 2>&1 | FileCheck -check-prefix=MODULES_DISABLE_DIAGNOSTIC_VALIDATION_DEFAULT %s
|
||||
// MODULES_DISABLE_DIAGNOSTIC_VALIDATION_DEFAULT-NOT: -fmodules-disable-diagnostic-validation
|
||||
|
||||
|
|
Loading…
Reference in New Issue