@@ -190,6 +190,25 @@ void Flang::addCodegenOptions(const ArgList &Args,
190190 CmdArgs.push_back (" -fcoarray" );
191191}
192192
193+ void Flang::addLTOOptions (const ArgList &Args, ArgStringList &CmdArgs) const {
194+ const ToolChain &TC = getToolChain ();
195+ const Driver &D = TC.getDriver ();
196+ DiagnosticsEngine &Diags = D.getDiags ();
197+ LTOKind LTOMode = D.getLTOMode ();
198+ // LTO mode is parsed by the Clang driver library.
199+ assert (LTOMode != LTOK_Unknown && " Unknown LTO mode." );
200+ if (LTOMode == LTOK_Full)
201+ CmdArgs.push_back (" -flto=full" );
202+ else if (LTOMode == LTOK_Thin) {
203+ Diags.Report (
204+ Diags.getCustomDiagID (DiagnosticsEngine::Warning,
205+ " the option '-flto=thin' is a work in progress" ));
206+ CmdArgs.push_back (" -flto=thin" );
207+ }
208+ Args.addAllArgs (CmdArgs, {options::OPT_ffat_lto_objects,
209+ options::OPT_fno_fat_lto_objects});
210+ }
211+
193212void Flang::addPicOptions (const ArgList &Args, ArgStringList &CmdArgs) const {
194213 // ParsePICArgs parses -fPIC/-fPIE and their variants and returns a tuple of
195214 // (RelocationModel, PICLevel, IsPIE).
@@ -829,7 +848,6 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
829848
830849 const Driver &D = TC.getDriver ();
831850 ArgStringList CmdArgs;
832- DiagnosticsEngine &Diags = D.getDiags ();
833851
834852 // Invoke ourselves in -fc1 mode.
835853 CmdArgs.push_back (" -fc1" );
@@ -892,17 +910,7 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA,
892910
893911 handleColorDiagnosticsArgs (D, Args, CmdArgs);
894912
895- // LTO mode is parsed by the Clang driver library.
896- LTOKind LTOMode = D.getLTOMode ();
897- assert (LTOMode != LTOK_Unknown && " Unknown LTO mode." );
898- if (LTOMode == LTOK_Full)
899- CmdArgs.push_back (" -flto=full" );
900- else if (LTOMode == LTOK_Thin) {
901- Diags.Report (
902- Diags.getCustomDiagID (DiagnosticsEngine::Warning,
903- " the option '-flto=thin' is a work in progress" ));
904- CmdArgs.push_back (" -flto=thin" );
905- }
913+ addLTOOptions (Args, CmdArgs);
906914
907915 // -fPIC and related options.
908916 addPicOptions (Args, CmdArgs);
0 commit comments