================
@@ -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()) {
+        CmdArgs.push_back("-mlink-builtin-bitcode");
+        CmdArgs.push_back(Args.MakeArgString(LibDeviceFile));
+      }
+    }
+  }
+}
+
----------------
kiranchandramohan wrote:

Is it possible to reuse code from `clang/lib/Driver/ToolChains/Cuda.cpp` ? 
Note: This is only a question, not a request for change.

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

Reply via email to