[PATCH] D120272: [CUDA] Add driver support for compiling CUDA with the new driver

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 4 10:41:08 PST 2022


tra added inline comments.


================
Comment at: clang/lib/Driver/Driver.cpp:4107
+                         options::OPT_no_offload_arch_EQ)) {
+    C.getDriver().Diag(diag::err_opt_not_valid_with_opt) << "--offload-arch"
+                                                         << "--offload";
----------------
Nit: It would be nice to report specific option which triggered the diag. Reporting `--offload-arch` when it's triggered by `--no-offload-arch` would be somewhat confusing.

`Args.hasArgNoClaim(options::OPT_offload_arch_EQ) ? "--offload-arch" : --no-offload-arch` ?


================
Comment at: clang/lib/Driver/Driver.cpp:4132-4134
+      Archs.insert(CudaArchToString(CudaArch::SM_35));
+    else if (Kind == Action::OFK_HIP)
+      Archs.insert(CudaArchToString(CudaArch::GFX803));
----------------
If we do not have constants for the default CUDA/HIP arch yet, we should probably add them and use them here.


================
Comment at: clang/lib/Driver/Driver.cpp:4171
 
-    for (unsigned I = 0; I < ToolChains.size(); ++I)
+    if (!Relocatable)
+      Diags.Report(diag::err_drv_non_relocatable);
----------------
If we do not allow non-relocatable compilation with the new driver, perhaps we should make `-fgpu-rdc` enabled by default with the new driver and error out if someone attempts to use `-fno-gpu-rdc`. Otherwise we're virtually guaranteed that everyone attempting to use `-foffload-new-driver` will hit this error.



================
Comment at: clang/lib/Driver/Driver.cpp:4172
+    if (!Relocatable)
+      Diags.Report(diag::err_drv_non_relocatable);
+
----------------
Do we want to return early here?


================
Comment at: clang/lib/Driver/Driver.cpp:4221
+    auto TCAndArch = TCAndArchs.begin();
     for (Action *A : DeviceActions) {
+      DDeps.add(*A, *TCAndArch->first, TCAndArch->second.data(), Kind);
----------------
Nit: We do have `llvm::zip` for iterating over multiple containers. However, unpacking loop variable results maybe more trouble than it's worth it in such a small loop, Up to you.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120272/new/

https://reviews.llvm.org/D120272



More information about the cfe-commits mailing list