Skip to content

Commit 81fa084

Browse files
Add diagnostic back.
1 parent aa54427 commit 81fa084

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,6 +1087,16 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
10871087
C.getInputArgs().hasFlag(options::OPT_fsycl, options::OPT_fno_sycl,
10881088
false) ||
10891089
hasSYCLDeviceOnly(C.getInputArgs());
1090+
bool IsSYCLOffloadArchEnabled =
1091+
HasValidSYCLRuntime &&
1092+
C.getInputArgs().hasArg(options::OPT_offload_arch_EQ);
1093+
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+
}
10901100

10911101
Arg *SYCLfpga = C.getInputArgs().getLastArg(options::OPT_fintelfpga);
10921102

@@ -7331,22 +7341,6 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
73317341

73327342
handleArguments(C, Args, Inputs, Actions);
73337343

7334-
bool HasValidSYCLRuntime =
7335-
C.getInputArgs().hasFlag(options::OPT_fsycl, options::OPT_fno_sycl,
7336-
false) ||
7337-
hasSYCLDeviceOnly(C.getInputArgs());
7338-
bool IsSYCLOffloadArchEnabled =
7339-
HasValidSYCLRuntime &&
7340-
C.getInputArgs().hasArg(options::OPT_offload_arch_EQ);
7341-
/*
7342-
if (IsSYCLOffloadArchEnabled &&
7343-
!C.getInputArgs().hasFlag(options::OPT_offload_new_driver,
7344-
options::OPT_no_offload_new_driver, false)) {
7345-
Diag(clang::diag::err_drv_sycl_offload_arch_new_driver);
7346-
return;
7347-
}
7348-
*/
7349-
73507344
// If '-fintelfpga' is passed, add '-fsycl' to the list of arguments
73517345
const llvm::opt::OptTable &Opts = getOpts();
73527346
Arg *SYCLFpgaArg = C.getInputArgs().getLastArg(options::OPT_fintelfpga);

clang/lib/Driver/ToolChains/SYCL.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@ using namespace clang::driver::tools;
2727
using namespace clang;
2828
using namespace llvm::opt;
2929

30+
// Struct that relates an AOT target value with
31+
// Intel CPUs and GPUs.
3032
struct StringToOffloadArchIntelMap {
3133
const char *ArchName;
3234
OffloadArchIntel IntelArch;
3335
};
3436

37+
// Mapping of valid --offload-arch values for Intel CPU and GPU
38+
// AOT targets.
3539
static const StringToOffloadArchIntelMap StringToArchNamesMap[] = {
3640
{"skylake-avx512", OffloadArchIntel::SKYLAKEAVX512},
3741
{"core-avx2", OffloadArchIntel::COREAVX2},
@@ -91,6 +95,8 @@ static const StringToOffloadArchIntelMap StringToArchNamesMap[] = {
9195
{"bmg_g21", OffloadArchIntel::BMG_G21},
9296
{"lnl_m", OffloadArchIntel::LNL_M}};
9397

98+
// Check if the user provided value for --offload-arch is a valid
99+
// Intel CPU or Intel GPU target.
94100
OffloadArchIntel
95101
clang::driver::StringToOffloadArchIntel(llvm::StringRef ArchNameAsString) {
96102
auto result = std::find_if(
@@ -103,6 +109,9 @@ clang::driver::StringToOffloadArchIntel(llvm::StringRef ArchNameAsString) {
103109
return result->IntelArch;
104110
}
105111

112+
// This is a mapping between the user provided --offload-arch value for Intel
113+
// GPU targets and the spir64_gen device name accepted by OCLOC (the Intel GPU
114+
// AOT compiler).
106115
StringRef clang::driver::mapIntelGPUArchName(StringRef ArchName) {
107116
StringRef Arch;
108117
Arch = llvm::StringSwitch<StringRef>(ArchName)

clang/lib/Driver/ToolChains/SYCL.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,13 @@ static inline bool IsIntelGPUOffloadArch(OffloadArchIntel Arch) {
9090
return Arch >= OffloadArchIntel::BDW && Arch <= OffloadArchIntel::LNL_M;
9191
}
9292

93+
// Mapping of valid --offload-arch values for Intel CPU and GPU
94+
// AOT targets.
9395
OffloadArchIntel StringToOffloadArchIntel(llvm::StringRef ArchNameAsString);
9496

97+
// This is a mapping between the user provided --offload-arch value for Intel
98+
// GPU targets and the spir64_gen device name accepted by OCLOC (the Intel GPU
99+
// AOT compiler).
95100
StringRef mapIntelGPUArchName(StringRef ArchName);
96101

97102
class SYCLInstallationDetector {

0 commit comments

Comments
 (0)