diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index d08af9e0a58a1..f27e25575cab2 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -7025,9 +7025,16 @@ def fsycl_remove_unused_external_funcs : Flag<["-"], "fsycl-remove-unused-extern def fno_sycl_remove_unused_external_funcs : Flag<["-"], "fno-sycl-remove-unused-external-funcs">, HelpText<"Prevent removal of unused `SYCL_EXTERNAL` functions">; def fsycl_allow_device_dependencies : Flag<["-"], "fsycl-allow-device-dependencies">, - HelpText<"Allow dependencies between device code images">; + HelpText<"Deprecated: please use -fsycl-allow-device-image-dependencies instead.">, + Flags<[Deprecated]>; def fno_sycl_allow_device_dependencies : Flag<["-"], "fno-sycl-allow-device-dependencies">, - HelpText<"Do not allow dependencies between device code images (default)">; + HelpText<"Deprecated: please use -fno-sycl-allow-device-image-dependencies instead.">, + Flags<[Deprecated]>; + +defm sycl_allow_device_image_dependencies: BoolOptionWithoutMarshalling<"f", "sycl-allow-device-image-dependencies", + PosFlag, + NegFlag>; + def fsycl_dump_device_code_EQ : Joined<["-"], "fsycl-dump-device-code=">, Flags<[NoXarchOption]>, HelpText<"Dump device code into the user provided directory.">; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index bbaea4eb8fd79..8f33cea7cb16b 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -10791,10 +10791,17 @@ static void addArgs(ArgStringList &DstArgs, const llvm::opt::ArgList &Alloc, } } -static bool allowDeviceDependencies(const llvm::opt::ArgList &TCArgs) { +static bool allowDeviceImageDependencies(const llvm::opt::ArgList &TCArgs) { + // deprecated if (TCArgs.hasFlag(options::OPT_fsycl_allow_device_dependencies, options::OPT_fno_sycl_allow_device_dependencies, false)) return true; + + // preferred + if (TCArgs.hasFlag(options::OPT_fsycl_allow_device_image_dependencies, + options::OPT_fno_sycl_allow_device_image_dependencies, false)) + return true; + return false; } @@ -10825,7 +10832,7 @@ static void getNonTripleBasedSYCLPostLinkOpts(const ToolChain &TC, options::OPT_fsycl_esimd_force_stateless_mem, false)) addArgs(PostLinkArgs, TCArgs, {"-lower-esimd-force-stateless-mem=false"}); - if (allowDeviceDependencies(TCArgs)) + if (allowDeviceImageDependencies(TCArgs)) addArgs(PostLinkArgs, TCArgs, {"-allow-device-image-dependencies"}); } @@ -10843,7 +10850,7 @@ static bool shouldEmitOnlyKernelsAsEntryPoints(const ToolChain &TC, return true; // When supporting dynamic linking, non-kernels in a device image can be // called. - if (allowDeviceDependencies(TCArgs)) + if (allowDeviceImageDependencies(TCArgs)) return false; if (Triple.isNVPTX() || Triple.isAMDGPU()) return false; diff --git a/clang/test/Driver/sycl-deprecated.cpp b/clang/test/Driver/sycl-deprecated.cpp index c678c93d2a3f5..339f70cdaffa5 100644 --- a/clang/test/Driver/sycl-deprecated.cpp +++ b/clang/test/Driver/sycl-deprecated.cpp @@ -3,4 +3,6 @@ // RUN: %clangxx -fno-sycl-explicit-simd %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-explicit-simd // RUN: %clangxx -fsycl -fsycl-use-bitcode %s -### 2>&1 | FileCheck %s -DOPTION=-fsycl-use-bitcode // RUN: %clangxx -fsycl -fno-sycl-use-bitcode %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-use-bitcode +// RUN: %clangxx -fsycl -fsycl-allow-device-dependencies %s -### 2>&1 | FileCheck %s -DOPTION=-fsycl-allow-device-dependencies +// RUN: %clangxx -fsycl -fno-sycl-allow-device-dependencies %s -### 2>&1 | FileCheck %s -DOPTION=-fno-sycl-allow-device-dependencies // CHECK: option '[[OPTION]]' is deprecated and will be removed in a future release diff --git a/clang/test/Driver/sycl-offload-old-model.cpp b/clang/test/Driver/sycl-offload-old-model.cpp index b4ef916bbd1d9..296e86cc32115 100644 --- a/clang/test/Driver/sycl-offload-old-model.cpp +++ b/clang/test/Driver/sycl-offload-old-model.cpp @@ -174,16 +174,16 @@ // 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 // CHECK_SYCL_POST_LINK_OPT_PASS: sycl-post-link{{.*}}emit-only-kernels-as-entry-points // 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 -// 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 +// 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 // CHECK_SYCL_POST_LINK_OPT_NO_PASS-NOT: sycl-post-link{{.*}}emit-only-kernels-as-entry-points /// Check selective passing of -allow-device-image-dependencies to sycl-post-link tool -// 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 -// 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 -// 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 -// 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 -// 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 -// 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 +// 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 +// 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 +// 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 +// 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 +// 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 +// 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 // CHECK_SYCL_POST_LINK_ADID_PASS: sycl-post-link{{.*}}allow-device-image-dependencies // CHECK_SYCL_POST_LINK_ADID_NO_PASS-NOT: sycl-post-link{{.*}}allow-device-image-dependencies diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/a.cpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/a.cpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/a.cpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/a.cpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/a.hpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/a.hpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/a.hpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/a.hpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/b.cpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/b.cpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/b.cpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/b.cpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/b.hpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/b.hpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/b.hpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/b.hpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/c.cpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/c.cpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/c.cpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/c.cpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/c.hpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/c.hpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/c.hpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/c.hpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/d.cpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/d.cpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/d.cpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/d.cpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/d.hpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/d.hpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/d.hpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/d.hpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/wrapper.cpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/wrapper.cpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/wrapper.cpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/wrapper.cpp diff --git a/sycl/test-e2e/DeviceDependencies/Inputs/wrapper.hpp b/sycl/test-e2e/DeviceImageDependencies/Inputs/wrapper.hpp similarity index 100% rename from sycl/test-e2e/DeviceDependencies/Inputs/wrapper.hpp rename to sycl/test-e2e/DeviceImageDependencies/Inputs/wrapper.hpp diff --git a/sycl/test-e2e/DeviceDependencies/dynamic.cpp b/sycl/test-e2e/DeviceImageDependencies/dynamic.cpp similarity index 86% rename from sycl/test-e2e/DeviceDependencies/dynamic.cpp rename to sycl/test-e2e/DeviceImageDependencies/dynamic.cpp index 784358ee82f52..8b35cbcf6d64b 100644 --- a/sycl/test-e2e/DeviceDependencies/dynamic.cpp +++ b/sycl/test-e2e/DeviceImageDependencies/dynamic.cpp @@ -1,8 +1,8 @@ -// Test -fsycl-allow-device-dependencies with dynamic libraries. +// Test -fsycl-allow-device-image-dependencies with dynamic libraries. // UNSUPPORTED: cuda || hip -// DEFINE: %{dynamic_lib_options} = -fsycl %fPIC %shared_lib -fsycl-allow-device-dependencies -I %S/Inputs %if windows %{-DMAKE_DLL %} +// DEFINE: %{dynamic_lib_options} = -fsycl %fPIC %shared_lib -fsycl-allow-device-image-dependencies -I %S/Inputs %if windows %{-DMAKE_DLL %} // DEFINE: %{dynamic_lib_suffix} = %if windows %{dll%} %else %{so%} // RUN: %clangxx %{dynamic_lib_options} %S/Inputs/d.cpp -o %T/libdevice_d.%{dynamic_lib_suffix} @@ -10,7 +10,7 @@ // RUN: %clangxx %{dynamic_lib_options} %S/Inputs/b.cpp %if windows %{%T/libdevice_c.lib%} -o %T/libdevice_b.%{dynamic_lib_suffix} // RUN: %clangxx %{dynamic_lib_options} %S/Inputs/a.cpp %if windows %{%T/libdevice_b.lib%} -o %T/libdevice_a.%{dynamic_lib_suffix} -// RUN: %{build} -fsycl-allow-device-dependencies -I %S/Inputs -o %t.out \ +// RUN: %{build} -fsycl-allow-device-image-dependencies -I %S/Inputs -o %t.out \ // RUN: %if windows \ // RUN: %{%T/libdevice_a.lib%} \ // RUN: %else \ diff --git a/sycl/test-e2e/DeviceDependencies/objects.cpp b/sycl/test-e2e/DeviceImageDependencies/objects.cpp similarity index 82% rename from sycl/test-e2e/DeviceDependencies/objects.cpp rename to sycl/test-e2e/DeviceImageDependencies/objects.cpp index 9c1c87876b8fb..9cd27f9f9ca6b 100644 --- a/sycl/test-e2e/DeviceDependencies/objects.cpp +++ b/sycl/test-e2e/DeviceImageDependencies/objects.cpp @@ -1,4 +1,4 @@ -// Test -fsycl-allow-device-dependencies with objects. +// Test -fsycl-allow-device-image-dependencies with objects. // UNSUPPORTED: cuda || hip @@ -6,7 +6,7 @@ // RUN: %clangxx -fsycl %S/Inputs/b.cpp -I %S/Inputs -c -o %t_b.o // RUN: %clangxx -fsycl %S/Inputs/c.cpp -I %S/Inputs -c -o %t_c.o // RUN: %clangxx -fsycl %S/Inputs/d.cpp -I %S/Inputs -c -o %t_d.o -// RUN: %{build} -fsycl-allow-device-dependencies %t_a.o %t_b.o %t_c.o %t_d.o -I %S/Inputs -o %t.out +// 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 // RUN: %{run} %t.out #include "a.hpp" diff --git a/sycl/test-e2e/DeviceDependencies/singleDynamicLibrary.cpp b/sycl/test-e2e/DeviceImageDependencies/singleDynamicLibrary.cpp similarity index 83% rename from sycl/test-e2e/DeviceDependencies/singleDynamicLibrary.cpp rename to sycl/test-e2e/DeviceImageDependencies/singleDynamicLibrary.cpp index 59c5534148b2d..f0a65b6f1f056 100644 --- a/sycl/test-e2e/DeviceDependencies/singleDynamicLibrary.cpp +++ b/sycl/test-e2e/DeviceImageDependencies/singleDynamicLibrary.cpp @@ -1,9 +1,9 @@ -// Test -fsycl-allow-device-dependencies with a single dynamic library on Windows +// Test -fsycl-allow-device-image-dependencies with a single dynamic library on Windows // and Linux. // UNSUPPORTED: cuda || hip -// RUN: %clangxx -fsycl %fPIC %shared_lib -fsycl-allow-device-dependencies -I %S/Inputs \ +// RUN: %clangxx -fsycl %fPIC %shared_lib -fsycl-allow-device-image-dependencies -I %S/Inputs \ // RUN: %S/Inputs/a.cpp \ // RUN: %S/Inputs/b.cpp \ // RUN: %S/Inputs/c.cpp \