================
@@ -519,6 +520,31 @@ void Flang::AddAMDGPUTargetArgs(const ArgList &Args,
TC.addClangTargetOptions(Args, CmdArgs, Action::OffloadKind::OFK_OpenMP);
}
+void Flang::AddNVPTXTargetArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+
+ // we cannot use addClangTargetOptions, as it appends unsupported args for
+ // flang: -fcuda-is-device, -fno-threadsafe-statics,
+ // -fcuda-allow-variadic-functions and -target-sdk-version Instead we
manually
+ // detect the CUDA installation and link libdevice
+ const ToolChain &TC = getToolChain();
+ const Driver &D = TC.getDriver();
+ const llvm::Triple &Triple = TC.getEffectiveTriple();
+
+ // Detect CUDA installation and link libdevice
+ CudaInstallationDetector CudaInstallation(D, Triple, Args);
+ if (CudaInstallation.isValid()) {
+ StringRef GpuArch = Args.getLastArgValue(options::OPT_march_EQ);
+ if (!GpuArch.empty()) {
+ std::string LibDeviceFile = CudaInstallation.getLibDeviceFile(GpuArch);
+ if (!LibDeviceFile.empty()) {
----------------
Jason-Van-Beusekom wrote:
It would result in a linker error:
```c++
flang -fopenmp --offload-arch=sm_80 test.f90
nvlink error : Undefined reference to '__nv_fabs' in
'/tmp/test-953628-nvptx64-nvidia-cuda-sm_80-c1abbf-179701.cubin'
/clang_install/bin/clang-nvlink-wrapper: error: 'nvlink' failed
clang: error: nvlink command failed with exit code 1 (use -v to see invocation)
```
https://github.com/llvm/llvm-project/pull/180060
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits