@@ -405,6 +405,8 @@ static void FixupInvocation(CompilerInvocation &Invocation,
405405 llvm::Triple T (TargetOpts.Triple );
406406 llvm::Triple::ArchType Arch = T.getArch ();
407407
408+ CodeGenOpts.CodeModel = TargetOpts.CodeModel ;
409+
408410 if (LangOpts.getExceptionHandling () != llvm::ExceptionHandling::None &&
409411 T.isWindowsMSVCEnvironment ())
410412 Diags.Report (diag::err_fe_invalid_exception_model)
@@ -901,11 +903,9 @@ static void setPGOUseInstrumentor(CodeGenOptions &Opts,
901903}
902904
903905static bool ParseCodeGenArgs (CodeGenOptions &Opts, ArgList &Args, InputKind IK,
904- DiagnosticsEngine &Diags,
905- const TargetOptions &TargetOpts,
906- const FrontendOptions &FrontendOpts) {
906+ DiagnosticsEngine &Diags, const llvm::Triple &T,
907+ const std::string &OutputFile) {
907908 bool Success = true ;
908- llvm::Triple Triple = llvm::Triple (TargetOpts.Triple );
909909
910910 unsigned OptimizationLevel = getOptimizationLevel (Args, IK, Diags);
911911 // TODO: This could be done in Driver
@@ -964,7 +964,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
964964 llvm::Triple::arm, llvm::Triple::armeb, llvm::Triple::mips,
965965 llvm::Triple::mipsel, llvm::Triple::mips64, llvm::Triple::mips64el};
966966
967- llvm::Triple T (TargetOpts.Triple );
968967 if (Opts.OptimizationLevel > 0 && Opts.hasReducedDebugInfo () &&
969968 llvm::is_contained (DebugEntryValueArchs, T.getArch ()))
970969 Opts.EmitCallSiteInfo = true ;
@@ -990,8 +989,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
990989 if (!Opts.ProfileInstrumentUsePath .empty ())
991990 setPGOUseInstrumentor (Opts, Opts.ProfileInstrumentUsePath );
992991
993- Opts.CodeModel = TargetOpts.CodeModel ;
994-
995992 if (const Arg *A = Args.getLastArg (OPT_ftime_report, OPT_ftime_report_EQ)) {
996993 Opts.TimePasses = true ;
997994
@@ -1036,8 +1033,8 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
10361033 if (Arg *A = Args.getLastArg (OPT_save_temps_EQ))
10371034 Opts.SaveTempsFilePrefix =
10381035 llvm::StringSwitch<std::string>(A->getValue ())
1039- .Case (" obj" , FrontendOpts. OutputFile )
1040- .Default (llvm::sys::path::filename (FrontendOpts. OutputFile ).str ());
1036+ .Case (" obj" , OutputFile)
1037+ .Default (llvm::sys::path::filename (OutputFile).str ());
10411038
10421039 // The memory profile runtime appends the pid to make this name more unique.
10431040 const char *MemProfileBasename = " memprof.profraw" ;
@@ -2937,11 +2934,11 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
29372934 InputKind DashX = ParseFrontendArgs (Res.getFrontendOpts (), Args, Diags,
29382935 LangOpts.IsHeaderFile );
29392936 ParseTargetArgs (Res.getTargetOpts (), Args, Diags);
2940- Success &= ParseCodeGenArgs (Res.getCodeGenOpts (), Args, DashX, Diags,
2941- Res.getTargetOpts (), Res.getFrontendOpts ());
2937+ llvm::Triple T (Res.getTargetOpts ().Triple );
2938+ Success &= ParseCodeGenArgs (Res.getCodeGenOpts (), Args, DashX, Diags, T,
2939+ Res.getFrontendOpts ().OutputFile );
29422940 ParseHeaderSearchArgs (Res.getHeaderSearchOpts (), Args,
29432941 Res.getFileSystemOpts ().WorkingDir );
2944- llvm::Triple T (Res.getTargetOpts ().Triple );
29452942 if (DashX.getFormat () == InputKind::Precompiled ||
29462943 DashX.getLanguage () == Language::LLVM_IR) {
29472944 // ObjCAAutoRefCount and Sanitize LangOpts are used to setup the
0 commit comments