Add a flag -enable-default-cmo to enable default cross-module-optimization.

So far, the swift-frontend decided by itself if CMO can be enabled. This caused problems when used with an old driver, which doesn't consider CMO.
Now, the driver decides when to use default CMO by passing this flag to swift-frontend.
This commit is contained in:
Erik Eckstein
2022-04-22 07:38:59 +02:00
parent 45acb912a9
commit abb2da88e6
6 changed files with 35 additions and 9 deletions

View File

@@ -1745,7 +1745,11 @@ static bool ParseSILArgs(SILOptions &Opts, ArgList &Args,
OPT_enable_actor_data_race_checks,
OPT_disable_actor_data_race_checks, /*default=*/false);
Opts.DisableSILPerfOptimizations |= Args.hasArg(OPT_disable_sil_perf_optzns);
Opts.CrossModuleOptimization |= Args.hasArg(OPT_CrossModuleOptimization);
if (Args.hasArg(OPT_CrossModuleOptimization)) {
Opts.CMOMode = CrossModuleOptimizationMode::Aggressive;
} else if (Args.hasArg(OPT_EnbaleDefaultCMO)) {
Opts.CMOMode = CrossModuleOptimizationMode::Default;
}
Opts.EnablePerformanceAnnotations |=
Args.hasArg(OPT_ExperimentalPerformanceAnnotations);
Opts.VerifyAll |= Args.hasArg(OPT_sil_verify_all);