@@ -182,6 +182,29 @@ void Flang::addCodegenOptions(const ArgList &Args,
182182 CmdArgs.push_back (" -fcoarray" );
183183}
184184
185+ void Flang::addLTOOptions (const ArgList &Args, ArgStringList &CmdArgs) const {
186+ const auto &TC = getToolChain ();
187+ const Driver &D = TC.getDriver ();
188+ DiagnosticsEngine &Diags = D.getDiags ();
189+ LTOKind LTOMode = D.getLTOMode ();
190+ // LTO mode is parsed by the Clang driver library.
191+ assert (LTOMode != LTOK_Unknown && " Unknown LTO mode." );
192+ if (LTOMode == LTOK_Full)
193+ CmdArgs.push_back (" -flto=full" );
194+ else if (LTOMode == LTOK_Thin) {
195+ Diags.Report (
196+ Diags.getCustomDiagID (DiagnosticsEngine::Warning,
197+ " the option '-flto=thin' is a work in progress" ));
198+ CmdArgs.push_back (" -flto=thin" );
199+ }
200+ if (Args.hasArg (options::OPT_flto_partitions_EQ)) {
201+ StringRef A = Args.getLastArgValue (options::OPT_flto_partitions_EQ, " 8" );
202+ CmdArgs.push_back (Args.MakeArgString (" -flto-partitions=" + A));
203+ }
204+ Args.addAllArgs (CmdArgs, {options::OPT_ffat_lto_objects,
205+ options::OPT_fno_fat_lto_objects});
206+ }
207+
185208void Flang::addPicOptions (const ArgList &Args, ArgStringList &CmdArgs) const {
186209 // ParsePICArgs parses -fPIC/-fPIE and their variants and returns a tuple of
187210 // (RelocationModel, PICLevel, IsPIE).
@@ -821,7 +844,6 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
821844
822845 const Driver &D = TC.getDriver ();
823846 ArgStringList CmdArgs;
824- DiagnosticsEngine &Diags = D.getDiags ();
825847
826848 // Invoke ourselves in -fc1 mode.
827849 CmdArgs.push_back (" -fc1" );
@@ -884,17 +906,7 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
884906
885907 handleColorDiagnosticsArgs (D, Args, CmdArgs);
886908
887- // LTO mode is parsed by the Clang driver library.
888- LTOKind LTOMode = D.getLTOMode ();
889- assert (LTOMode != LTOK_Unknown && " Unknown LTO mode." );
890- if (LTOMode == LTOK_Full)
891- CmdArgs.push_back (" -flto=full" );
892- else if (LTOMode == LTOK_Thin) {
893- Diags.Report (
894- Diags.getCustomDiagID (DiagnosticsEngine::Warning,
895- " the option '-flto=thin' is a work in progress" ));
896- CmdArgs.push_back (" -flto=thin" );
897- }
909+ addLTOOptions (Args, CmdArgs);
898910
899911 // -fPIC and related options.
900912 addPicOptions (Args, CmdArgs);
0 commit comments