Skip to content

Commit 1d4e066

Browse files
author
LU-JOHN
authored
Add option "-fsycl-allow-device-image-dependencies" (#15407)
Add option "-fsycl-allow-device-image-dependencies". This option replaces "-fsycl-allow-device-dependencies" which is deprecated. --------- Signed-off-by: Lu, John <[email protected]>
1 parent 7eb082c commit 1d4e066

File tree

17 files changed

+35
-19
lines changed

17 files changed

+35
-19
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7049,9 +7049,16 @@ def fsycl_remove_unused_external_funcs : Flag<["-"], "fsycl-remove-unused-extern
70497049
def fno_sycl_remove_unused_external_funcs : Flag<["-"], "fno-sycl-remove-unused-external-funcs">,
70507050
HelpText<"Prevent removal of unused `SYCL_EXTERNAL` functions">;
70517051
def fsycl_allow_device_dependencies : Flag<["-"], "fsycl-allow-device-dependencies">,
7052-
HelpText<"Allow dependencies between device code images">;
7052+
HelpText<"Deprecated: please use -fsycl-allow-device-image-dependencies instead.">,
7053+
Flags<[Deprecated]>;
70537054
def fno_sycl_allow_device_dependencies : Flag<["-"], "fno-sycl-allow-device-dependencies">,
7054-
HelpText<"Do not allow dependencies between device code images (default)">;
7055+
HelpText<"Deprecated: please use -fno-sycl-allow-device-image-dependencies instead.">,
7056+
Flags<[Deprecated]>;
7057+
7058+
defm sycl_allow_device_image_dependencies: BoolOptionWithoutMarshalling<"f", "sycl-allow-device-image-dependencies",
7059+
PosFlag<SetTrue, [], [ClangOption], "Allow dependencies between device code images">,
7060+
NegFlag<SetFalse, [], [ClangOption], "Do not allow dependencies between device code images (default)">>;
7061+
70557062
def fsycl_dump_device_code_EQ : Joined<["-"], "fsycl-dump-device-code=">,
70567063
Flags<[NoXarchOption]>,
70577064
HelpText<"Dump device code into the user provided directory.">;

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10801,10 +10801,17 @@ static void addArgs(ArgStringList &DstArgs, const llvm::opt::ArgList &Alloc,
1080110801
}
1080210802
}
1080310803

10804-
static bool allowDeviceDependencies(const llvm::opt::ArgList &TCArgs) {
10804+
static bool allowDeviceImageDependencies(const llvm::opt::ArgList &TCArgs) {
10805+
// deprecated
1080510806
if (TCArgs.hasFlag(options::OPT_fsycl_allow_device_dependencies,
1080610807
options::OPT_fno_sycl_allow_device_dependencies, false))
1080710808
return true;
10809+
10810+
// preferred
10811+
if (TCArgs.hasFlag(options::OPT_fsycl_allow_device_image_dependencies,
10812+
options::OPT_fno_sycl_allow_device_image_dependencies, false))
10813+
return true;
10814+
1080810815
return false;
1080910816
}
1081010817

@@ -10835,7 +10842,7 @@ static void getNonTripleBasedSYCLPostLinkOpts(const ToolChain &TC,
1083510842
options::OPT_fsycl_esimd_force_stateless_mem, false))
1083610843
addArgs(PostLinkArgs, TCArgs, {"-lower-esimd-force-stateless-mem=false"});
1083710844

10838-
if (allowDeviceDependencies(TCArgs))
10845+
if (allowDeviceImageDependencies(TCArgs))
1083910846
addArgs(PostLinkArgs, TCArgs, {"-allow-device-image-dependencies"});
1084010847
}
1084110848

@@ -10853,7 +10860,7 @@ static bool shouldEmitOnlyKernelsAsEntryPoints(const ToolChain &TC,
1085310860
return true;
1085410861
// When supporting dynamic linking, non-kernels in a device image can be
1085510862
// called.
10856-
if (allowDeviceDependencies(TCArgs))
10863+
if (allowDeviceImageDependencies(TCArgs))
1085710864
return false;
1085810865
if (Triple.isNVPTX() || Triple.isAMDGPU())
1085910866
return false;

clang/test/Driver/sycl-deprecated.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
// RUN: %clangxx -fno-sycl-explicit-simd %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-explicit-simd
44
// RUN: %clangxx -fsycl -fsycl-use-bitcode %s -### 2>&1 | FileCheck %s -DOPTION=-fsycl-use-bitcode
55
// RUN: %clangxx -fsycl -fno-sycl-use-bitcode %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-use-bitcode
6+
// RUN: %clangxx -fsycl -fsycl-allow-device-dependencies %s -### 2>&1 | FileCheck %s -DOPTION=-fsycl-allow-device-dependencies
7+
// RUN: %clangxx -fsycl -fno-sycl-allow-device-dependencies %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-allow-device-dependencies
68
// CHECK: option '[[OPTION]]' is deprecated and will be removed in a future release

clang/test/Driver/sycl-offload-old-model.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,16 @@
174174
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_OPT_PASS %s
175175
// CHECK_SYCL_POST_LINK_OPT_PASS: sycl-post-link{{.*}}emit-only-kernels-as-entry-points
176176
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fno-sycl-remove-unused-external-funcs %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_OPT_NO_PASS %s
177-
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_OPT_NO_PASS %s
177+
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_OPT_NO_PASS %s
178178
// CHECK_SYCL_POST_LINK_OPT_NO_PASS-NOT: sycl-post-link{{.*}}emit-only-kernels-as-entry-points
179179

180180
/// Check selective passing of -allow-device-image-dependencies to sycl-post-link tool
181-
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga -fsycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
182-
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
183-
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fno-sycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_NO_PASS %s
184-
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga -fsycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
185-
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
186-
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fno-sycl-allow-device-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_NO_PASS %s
181+
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga -fsycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
182+
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
183+
// RUN: %clang -### -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fno-sycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_NO_PASS %s
184+
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga -fsycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
185+
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fsycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_PASS %s
186+
// RUN: %clang_cl -### -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen -fno-sycl-allow-device-image-dependencies %s 2>&1 | FileCheck -check-prefix=CHECK_SYCL_POST_LINK_ADID_NO_PASS %s
187187

188188
// CHECK_SYCL_POST_LINK_ADID_PASS: sycl-post-link{{.*}}allow-device-image-dependencies
189189
// CHECK_SYCL_POST_LINK_ADID_NO_PASS-NOT: sycl-post-link{{.*}}allow-device-image-dependencies

sycl/test-e2e/DeviceDependencies/dynamic.cpp renamed to sycl/test-e2e/DeviceImageDependencies/dynamic.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
// Test -fsycl-allow-device-dependencies with dynamic libraries.
1+
// Test -fsycl-allow-device-image-dependencies with dynamic libraries.
22

33
// UNSUPPORTED: cuda || hip
44

5-
// DEFINE: %{dynamic_lib_options} = -fsycl %fPIC %shared_lib -fsycl-allow-device-dependencies -I %S/Inputs %if windows %{-DMAKE_DLL %}
5+
// DEFINE: %{dynamic_lib_options} = -fsycl %fPIC %shared_lib -fsycl-allow-device-image-dependencies -I %S/Inputs %if windows %{-DMAKE_DLL %}
66
// DEFINE: %{dynamic_lib_suffix} = %if windows %{dll%} %else %{so%}
77

88
// RUN: %clangxx %{dynamic_lib_options} %S/Inputs/d.cpp -o %T/libdevice_d.%{dynamic_lib_suffix}
99
// RUN: %clangxx %{dynamic_lib_options} %S/Inputs/c.cpp %if windows %{%T/libdevice_d.lib%} -o %T/libdevice_c.%{dynamic_lib_suffix}
1010
// RUN: %clangxx %{dynamic_lib_options} %S/Inputs/b.cpp %if windows %{%T/libdevice_c.lib%} -o %T/libdevice_b.%{dynamic_lib_suffix}
1111
// RUN: %clangxx %{dynamic_lib_options} %S/Inputs/a.cpp %if windows %{%T/libdevice_b.lib%} -o %T/libdevice_a.%{dynamic_lib_suffix}
1212

13-
// RUN: %{build} -fsycl-allow-device-dependencies -I %S/Inputs -o %t.out \
13+
// RUN: %{build} -fsycl-allow-device-image-dependencies -I %S/Inputs -o %t.out \
1414
// RUN: %if windows \
1515
// RUN: %{%T/libdevice_a.lib%} \
1616
// RUN: %else \

sycl/test-e2e/DeviceDependencies/objects.cpp renamed to sycl/test-e2e/DeviceImageDependencies/objects.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
// Test -fsycl-allow-device-dependencies with objects.
1+
// Test -fsycl-allow-device-image-dependencies with objects.
22

33
// UNSUPPORTED: cuda || hip
44

55
// RUN: %clangxx -fsycl %S/Inputs/a.cpp -I %S/Inputs -c -o %t_a.o
66
// RUN: %clangxx -fsycl %S/Inputs/b.cpp -I %S/Inputs -c -o %t_b.o
77
// RUN: %clangxx -fsycl %S/Inputs/c.cpp -I %S/Inputs -c -o %t_c.o
88
// RUN: %clangxx -fsycl %S/Inputs/d.cpp -I %S/Inputs -c -o %t_d.o
9-
// RUN: %{build} -fsycl-allow-device-dependencies %t_a.o %t_b.o %t_c.o %t_d.o -I %S/Inputs -o %t.out
9+
// RUN: %{build} -fsycl-allow-device-image-dependencies %t_a.o %t_b.o %t_c.o %t_d.o -I %S/Inputs -o %t.out
1010
// RUN: %{run} %t.out
1111

1212
#include "a.hpp"

sycl/test-e2e/DeviceDependencies/singleDynamicLibrary.cpp renamed to sycl/test-e2e/DeviceImageDependencies/singleDynamicLibrary.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
// Test -fsycl-allow-device-dependencies with a single dynamic library on Windows
1+
// Test -fsycl-allow-device-image-dependencies with a single dynamic library on Windows
22
// and Linux.
33

44
// UNSUPPORTED: cuda || hip
55

6-
// RUN: %clangxx -fsycl %fPIC %shared_lib -fsycl-allow-device-dependencies -I %S/Inputs \
6+
// RUN: %clangxx -fsycl %fPIC %shared_lib -fsycl-allow-device-image-dependencies -I %S/Inputs \
77
// RUN: %S/Inputs/a.cpp \
88
// RUN: %S/Inputs/b.cpp \
99
// RUN: %S/Inputs/c.cpp \

0 commit comments

Comments
 (0)