@@ -1091,13 +1091,6 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
10911091 HasValidSYCLRuntime &&
10921092 C.getInputArgs ().hasArg (options::OPT_offload_arch_EQ);
10931093
1094- if (IsSYCLOffloadArchEnabled &&
1095- !C.getInputArgs ().hasFlag (options::OPT_offload_new_driver,
1096- options::OPT_no_offload_new_driver, false )) {
1097- Diag (clang::diag::err_drv_sycl_offload_arch_new_driver);
1098- return ;
1099- }
1100-
11011094 Arg *SYCLfpga = C.getInputArgs ().getLastArg (options::OPT_fintelfpga);
11021095
11031096 // Make -fintelfpga flag imply -fsycl.
@@ -1368,6 +1361,20 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
13681361 llvm::Triple SYCLTargetTriple (MakeSYCLDeviceTriple (Val.getKey ()));
13691362 std::string NormalizedName = SYCLTargetTriple.normalize ();
13701363
1364+ // SYCL offloading to Intel CPUs and Intel GPUs with ``--offload-arch``
1365+ // is currently enabled only with ``--offload-new-driver`` option.
1366+ // Emit a diagnostic if ``--offload-arch`` is invoked without
1367+ // ``--offload-new driver`` option.
1368+ if (SYCLTargetTriple != NVPTXTriple && SYCLTargetTriple != AMDTriple) {
1369+ if (IsSYCLOffloadArchEnabled &&
1370+ !C.getInputArgs ().hasFlag (options::OPT_offload_new_driver,
1371+ options::OPT_no_offload_new_driver,
1372+ false )) {
1373+ Diag (clang::diag::err_drv_sycl_offload_arch_new_driver);
1374+ return ;
1375+ }
1376+ }
1377+
13711378 // Make sure we don't have a duplicate triple.
13721379 auto Duplicate = FoundNormalizedTriples.find (NormalizedName);
13731380 if (Duplicate != FoundNormalizedTriples.end ()) {
0 commit comments