================
@@ -200,3 +209,26 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const 
ArgList &Args,
                                                  ArgStringList &CC1Args) const 
{
   HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
 }
+
+llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12>
+SYCLToolChain::getDeviceLibs(
+    const llvm::opt::ArgList &DriverArgs, BoundArch /*BA*/,
+    const Action::OffloadKind /*DeviceOffloadingKind*/) const {
+  if (!getTriple().isSPIROrSPIRV())
+    return {};
+  if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
+                          true))
+    return {};
+  // -nolibsycl suppresses all SYCL library injection including device libs.
----------------
bader wrote:

I'm not sure if we should do that.

`libclang_rt.builtins.bc` provides functionality specific to SPIR-V target (in 
the current context), which is useful for other GPU offloading programming 
models (e.g. OpenMP offload). I suggest we don't disable compiler-rt for 
`-nolibsycl` flag.

I think it's worth considering a new function in 
`clang\lib\Driver\ToolChains\CommonArgs.cpp` similar to 
`tools::addOpenMPDeviceRTL` and `tools::addOpenCLBuiltinsLib` which can be 
invoked from here and other toolchains targeting SPIR-V.

A couple of other issues with this check:
 - this code is not tested
 - the error message for missing device library mentions only `--no-offloadlib` 
flag as a mean to disable the linking with `libclang_rt.builtins.bc`. 

https://github.com/llvm/llvm-project/pull/196656
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to