@@ -5589,6 +5589,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
55895589 Args.AddLastArg (CmdArgs, options::OPT_fsycl_decompose_functor,
55905590 options::OPT_fno_sycl_decompose_functor);
55915591
5592+ Args.AddLastArg (CmdArgs, options::OPT_fsycl_rtc_mode,
5593+ options::OPT_fno_sycl_rtc_mode);
5594+
55925595 // Forward -fsycl-instrument-device-code option to cc1. This option will
55935596 // only be used for SPIR/SPIR-V based targets.
55945597 if (Triple.isSPIROrSPIRV ())
@@ -10350,33 +10353,48 @@ void OffloadWrapper::ConstructJob(Compilation &C, const JobAction &JA,
1035010353 assert (JA.getInputs ().size () == Inputs.size () &&
1035110354 " Not have inputs for all dependence actions??" );
1035210355
10353- // For FPGA, we wrap the host objects before archiving them when using
10354- // -fsycl-link. This allows for better extraction control from the
10355- // archive when we need the host objects for subsequent compilations.
1035610356 if (OffloadingKind == Action::OFK_None &&
10357- C.getArgs ().hasArg (options::OPT_fintelfpga) &&
1035810357 C.getArgs ().hasArg (options::OPT_fsycl_link_EQ)) {
1035910358
10360- // Add offload targets and inputs.
10361- CmdArgs.push_back (C.getArgs ().MakeArgString (
10362- Twine (" -kind=" ) + Action::GetOffloadKindName (OffloadingKind)));
10363- CmdArgs.push_back (
10364- TCArgs.MakeArgString (Twine (" -target=" ) + Triple.getTriple ()));
10359+ // For FPGA, we wrap the host objects before archiving them when using
10360+ // -fsycl-link. This allows for better extraction control from the
10361+ // archive when we need the host objects for subsequent compilations.
10362+ if (C.getArgs ().hasArg (options::OPT_fintelfpga)) {
1036510363
10366- if (Inputs[0 ].getType () == types::TY_Tempfiletable ||
10367- Inputs[0 ].getType () == types::TY_Tempfilelist)
10368- // Input files are passed via the batch job file table.
10369- CmdArgs.push_back (C.getArgs ().MakeArgString (" -batch" ));
10364+ // Add offload targets and inputs.
10365+ CmdArgs.push_back (C.getArgs ().MakeArgString (
10366+ Twine (" -kind=" ) + Action::GetOffloadKindName (OffloadingKind)));
10367+ CmdArgs.push_back (
10368+ TCArgs.MakeArgString (Twine (" -target=" ) + Triple.getTriple ()));
1037010369
10371- // Add input.
10372- assert (Inputs[0 ].isFilename () && " Invalid input." );
10373- CmdArgs.push_back (TCArgs.MakeArgString (Inputs[0 ].getFilename ()));
10370+ if (Inputs[0 ].getType () == types::TY_Tempfiletable ||
10371+ Inputs[0 ].getType () == types::TY_Tempfilelist)
10372+ // Input files are passed via the batch job file table.
10373+ CmdArgs.push_back (C.getArgs ().MakeArgString (" -batch" ));
1037410374
10375- C.addCommand (std::make_unique<Command>(
10376- JA, *this , ResponseFileSupport::None (),
10377- TCArgs.MakeArgString (getToolChain ().GetProgramPath (getShortName ())),
10378- CmdArgs, Inputs));
10379- return ;
10375+ // Add input.
10376+ assert (Inputs[0 ].isFilename () && " Invalid input." );
10377+ CmdArgs.push_back (TCArgs.MakeArgString (Inputs[0 ].getFilename ()));
10378+
10379+ C.addCommand (std::make_unique<Command>(
10380+ JA, *this , ResponseFileSupport::None (),
10381+ TCArgs.MakeArgString (getToolChain ().GetProgramPath (getShortName ())),
10382+ CmdArgs, Inputs));
10383+ return ;
10384+ } else {
10385+ // When compiling and linking separately, we need to propagate the
10386+ // compression related CLI options to offload-wrapper. Don't propagate
10387+ // these options when wrapping objects for FPGA.
10388+ if (C.getInputArgs ().getLastArg (options::OPT_offload_compress)) {
10389+ CmdArgs.push_back (
10390+ C.getArgs ().MakeArgString (Twine (" -offload-compress" )));
10391+ // -offload-compression-level=<>
10392+ if (Arg *A = C.getInputArgs ().getLastArg (
10393+ options::OPT_offload_compression_level_EQ))
10394+ CmdArgs.push_back (C.getArgs ().MakeArgString (
10395+ Twine (" -offload-compression-level=" ) + A->getValue ()));
10396+ }
10397+ }
1038010398 }
1038110399
1038210400 // Add offload targets and inputs.
0 commit comments