@@ -3690,38 +3690,49 @@ static void RenderModulesOptions(Compilation &C, const Driver &D,
3690
3690
Args.AddLastArg (CmdArgs, options::OPT_fmodules_prune_interval);
3691
3691
Args.AddLastArg (CmdArgs, options::OPT_fmodules_prune_after);
3692
3692
3693
- Args.AddLastArg (CmdArgs, options::OPT_fbuild_session_timestamp);
3693
+ if (HaveClangModules) {
3694
+ Args.AddLastArg (CmdArgs, options::OPT_fbuild_session_timestamp);
3694
3695
3695
- if (Arg *A = Args.getLastArg (options::OPT_fbuild_session_file)) {
3696
- if (Args.hasArg (options::OPT_fbuild_session_timestamp))
3697
- D.Diag (diag::err_drv_argument_not_allowed_with)
3698
- << A->getAsString (Args) << " -fbuild-session-timestamp" ;
3696
+ if (Arg *A = Args.getLastArg (options::OPT_fbuild_session_file)) {
3697
+ if (Args.hasArg (options::OPT_fbuild_session_timestamp))
3698
+ D.Diag (diag::err_drv_argument_not_allowed_with)
3699
+ << A->getAsString (Args) << " -fbuild-session-timestamp" ;
3699
3700
3700
- llvm::sys::fs::file_status Status;
3701
- if (llvm::sys::fs::status (A->getValue (), Status))
3702
- D.Diag (diag::err_drv_no_such_file) << A->getValue ();
3703
- CmdArgs.push_back (Args.MakeArgString (
3704
- " -fbuild-session-timestamp=" +
3705
- Twine ((uint64_t )std::chrono::duration_cast<std::chrono::seconds>(
3706
- Status.getLastModificationTime ().time_since_epoch ())
3707
- .count ())));
3708
- }
3701
+ llvm::sys::fs::file_status Status;
3702
+ if (llvm::sys::fs::status (A->getValue (), Status))
3703
+ D.Diag (diag::err_drv_no_such_file) << A->getValue ();
3704
+ CmdArgs.push_back (Args.MakeArgString (
3705
+ " -fbuild-session-timestamp=" +
3706
+ Twine ((uint64_t )std::chrono::duration_cast<std::chrono::seconds>(
3707
+ Status.getLastModificationTime ().time_since_epoch ())
3708
+ .count ())));
3709
+ }
3709
3710
3710
- if (Args.getLastArg (options::OPT_fmodules_validate_once_per_build_session)) {
3711
- if (!Args.getLastArg (options::OPT_fbuild_session_timestamp,
3712
- options::OPT_fbuild_session_file))
3713
- D.Diag (diag::err_drv_modules_validate_once_requires_timestamp);
3711
+ if (Args.getLastArg (
3712
+ options::OPT_fmodules_validate_once_per_build_session)) {
3713
+ if (!Args.getLastArg (options::OPT_fbuild_session_timestamp,
3714
+ options::OPT_fbuild_session_file))
3715
+ D.Diag (diag::err_drv_modules_validate_once_requires_timestamp);
3714
3716
3715
- Args.AddLastArg (CmdArgs,
3716
- options::OPT_fmodules_validate_once_per_build_session);
3717
- }
3717
+ Args.AddLastArg (CmdArgs,
3718
+ options::OPT_fmodules_validate_once_per_build_session);
3719
+ }
3718
3720
3719
- if (Args.hasFlag (options::OPT_fmodules_validate_system_headers,
3720
- options::OPT_fno_modules_validate_system_headers,
3721
- ImplicitModules))
3722
- CmdArgs.push_back (" -fmodules-validate-system-headers" );
3721
+ if (Args.hasFlag (options::OPT_fmodules_validate_system_headers,
3722
+ options::OPT_fno_modules_validate_system_headers,
3723
+ ImplicitModules))
3724
+ CmdArgs.push_back (" -fmodules-validate-system-headers" );
3723
3725
3724
- Args.AddLastArg (CmdArgs, options::OPT_fmodules_disable_diagnostic_validation);
3726
+ Args.AddLastArg (CmdArgs,
3727
+ options::OPT_fmodules_disable_diagnostic_validation);
3728
+ } else {
3729
+ Args.ClaimAllArgs (options::OPT_fbuild_session_timestamp);
3730
+ Args.ClaimAllArgs (options::OPT_fbuild_session_file);
3731
+ Args.ClaimAllArgs (options::OPT_fmodules_validate_once_per_build_session);
3732
+ Args.ClaimAllArgs (options::OPT_fmodules_validate_system_headers);
3733
+ Args.ClaimAllArgs (options::OPT_fno_modules_validate_system_headers);
3734
+ Args.ClaimAllArgs (options::OPT_fmodules_disable_diagnostic_validation);
3735
+ }
3725
3736
}
3726
3737
3727
3738
static void RenderCharacterOptions (const ArgList &Args, const llvm::Triple &T,
0 commit comments