https://github.com/srividya-sundaram updated https://github.com/llvm/llvm-project/pull/174877
>From bcaab110a073894c44ab47889aa4fe41b95dde42 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Wed, 7 Jan 2026 14:42:11 -0800 Subject: [PATCH 1/2] [SYCL][Driver] Pass -lsycl by default for SYCL compilation. --- clang/include/clang/Options/Options.td | 4 ++++ clang/lib/Driver/ToolChains/Gnu.cpp | 7 +++++++ clang/test/Driver/sycl-offload-jit.cpp | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td index f336542992993..aa3cd218fc199 100644 --- a/clang/include/clang/Options/Options.td +++ b/clang/include/clang/Options/Options.td @@ -7276,6 +7276,10 @@ def fsycl : Flag<["-"], "fsycl">, HelpText<"Enable SYCL C++ extensions">; def fno_sycl : Flag<["-"], "fno-sycl">, HelpText<"Disable SYCL C++ extensions">; +def nolibsycl : Flag<["-"], "nolibsycl">, + Flags<[NoXarchOption]>, + Visibility<[ClangOption, CLOption, ]>, + HelpText<"Do not link SYCL runtime library">; def fsycl_device_only : Flag<["-"], "fsycl-device-only">, Alias<offload_device_only>, HelpText<"Compile SYCL code for device only">; def fsycl_host_only : Flag<["-"], "fsycl-host-only">, diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 7ecdbe7c57650..943a3250e94f0 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -514,6 +514,13 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, AddRunTimeLibs(ToolChain, D, CmdArgs, Args); + // For SYCL compilations, pass the linker option '-lsycl' by default to + // the clang-linker-wrapper tool which links the SYCL runtime library. + if (Args.hasArg(options::OPT_fsycl) && + !Args.hasArg(options::OPT_nolibsycl)) { + CmdArgs.push_back("-lsycl"); + } + // LLVM support for atomics on 32-bit SPARC V8+ is incomplete, so // forcibly link with libatomic as a workaround. // TODO: Issue #41880 and D118021. diff --git a/clang/test/Driver/sycl-offload-jit.cpp b/clang/test/Driver/sycl-offload-jit.cpp index 72c2390a3fe4b..7f8fe64866882 100644 --- a/clang/test/Driver/sycl-offload-jit.cpp +++ b/clang/test/Driver/sycl-offload-jit.cpp @@ -29,6 +29,11 @@ // CHK-DEVICE-TRIPLE-SAME: "-O2" // CHK-DEVICE-TRIPLE: llvm-offload-binary{{.*}} "--image=file={{.*}}.bc,triple=spirv64-unknown-unknown,arch=generic,kind=sycl" +// Check if -lsycl is passed to clang-linker-wrapper tool by default for SYCL compilation. +// RUN: %clang -### -fsycl %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-LSYCL %s +// CHECK-LSYCL: clang-linker-wrapper{{.*}} "-L/lib"{{.*}} "-lsycl" + /// Check -fsycl-is-device is passed when compiling for the device. /// Check -fsycl-is-host is passed when compiling for host. // RUN: %clang -### -fsycl -c %s 2>&1 \ >From e1c86868c00dca67957abefcfec500e997b0ce38 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Wed, 7 Jan 2026 14:57:11 -0800 Subject: [PATCH 2/2] Remove extra colon. --- clang/include/clang/Options/Options.td | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td index aa3cd218fc199..188e34b513e25 100644 --- a/clang/include/clang/Options/Options.td +++ b/clang/include/clang/Options/Options.td @@ -7278,7 +7278,7 @@ def fno_sycl : Flag<["-"], "fno-sycl">, HelpText<"Disable SYCL C++ extensions">; def nolibsycl : Flag<["-"], "nolibsycl">, Flags<[NoXarchOption]>, - Visibility<[ClangOption, CLOption, ]>, + Visibility<[ClangOption, CLOption]>, HelpText<"Do not link SYCL runtime library">; def fsycl_device_only : Flag<["-"], "fsycl-device-only">, Alias<offload_device_only>, HelpText<"Compile SYCL code for device only">; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
