Skip to content

Commit 3ca207e

Browse files
committed
[SYCL][Driver] Error for -foffload-lto and -fsycl-device-code-split=off
Signed-off-by: Sarnie, Nick <nick.sarnie@intel.com>
1 parent 4e41992 commit 3ca207e

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5846,12 +5846,17 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
58465846
bool IsUsingOffloadNewDriver =
58475847
Args.hasFlag(options::OPT_offload_new_driver,
58485848
options::OPT_no_offload_new_driver, false);
5849+
Arg *SYCLSplitMode =
5850+
Args.getLastArg(options::OPT_fsycl_device_code_split_EQ);
5851+
bool IsDeviceCodeSplitDisabled =
5852+
SYCLSplitMode && StringRef(SYCLSplitMode->getValue()) == "off";
58495853
bool IsSYCLLTOSupported = JA.isDeviceOffloading(Action::OFK_SYCL) &&
5850-
Triple.isSPIROrSPIRV() &&
5851-
IsUsingOffloadNewDriver;
5852-
if (IsDeviceOffloadAction && !JA.isDeviceOffloading(Action::OFK_OpenMP) &&
5853-
!IsUsingOffloadNewDriver && !Triple.isAMDGPU() &&
5854-
!IsSYCLLTOSupported) {
5854+
IsUsingOffloadNewDriver &&
5855+
!IsDeviceCodeSplitDisabled;
5856+
if ((IsDeviceOffloadAction &&
5857+
!JA.isDeviceOffloading(Action::OFK_OpenMP) && !Triple.isAMDGPU() &&
5858+
!IsUsingOffloadNewDriver) ||
5859+
(JA.isDeviceOffloading(Action::OFK_SYCL) && !IsSYCLLTOSupported)) {
58555860
D.Diag(diag::err_drv_unsupported_opt_for_target)
58565861
<< Args.getLastArg(options::OPT_foffload_lto,
58575862
options::OPT_foffload_lto_EQ)

clang/test/Driver/sycl-lto.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
// RUN: not %clangxx -fsycl -foffload-lto=thin %s -### 2>&1 | FileCheck -check-prefix=CHECK_ERROR %s
55
// CHECK_ERROR: unsupported option '-foffload-lto=thin' for target 'spir64-unknown-unknown'
66

7+
// Verify we error when using the new offload driver but with device code split set to off.
8+
// RUN: not %clangxx -fsycl --offload-new-driver -foffload-lto=thin -fsycl-device-code-split=off %s -### 2>&1 | FileCheck -check-prefix=CHECK_SPLIT_ERROR %s
9+
// CHECK_SPLIT_ERROR: unsupported option '-foffload-lto=thin' for target 'spir64-unknown-unknown'
10+
711
// Verify there's no error and we see the expected cc1 flags with the new offload driver.
812
// RUN: %clangxx -fsycl --offload-new-driver -foffload-lto=thin %s -### 2>&1 | FileCheck -check-prefix=CHECK_SUPPORTED %s
913
// CHECK_SUPPORTED: clang{{.*}} "-cc1" "-triple" "spir64-unknown-unknown" {{.*}} "-flto=thin" "-flto-unit"

0 commit comments

Comments
 (0)