[PATCH] D124220: [OpenMP] Add options to only compile the host or device when offloading

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 26 16:46:14 PDT 2022

tra added inline comments.

Comment at: clang/include/clang/Driver/Options.td:2527
   HelpText<"Use the static host OpenMP runtime while linking.">;
+def offload_device_only : Flag<["-"], "offload-device-only">,
+  HelpText<"Only compile for the offloading device.">;
We should be using "--" for the new options.

Comment at: clang/lib/Driver/Driver.cpp:4205
   // Claim --cuda-host-only and --cuda-compile-host-device, which may be passed
   // to non-CUDA compilations and should not trigger warnings there.
Comment may need updating.

Comment at: clang/lib/Driver/Driver.cpp:4215
                                        Action *HostAction) const {
-  if (!isa<CompileJobAction>(HostAction))
+  if (Args.hasArg(options::OPT_offload_host_only))
     return HostAction;
This will not always be correct. E.g. `--offload-host-only --offload-host-device` would be true here, but we would still want to compile for both and device.

Is there a reason we can no longer rely on `HostAction`?

Comment at: clang/lib/Driver/Driver.cpp:4223
+  if (!isa<CompileJobAction>(HostAction) && PL.back() != phases::Preprocess)
+    return HostAction;
This could use a comment. I don't quite understand what we're doing here and why.
Only doing host-side preprocessing  if -E is passed?

Comment at: clang/lib/Driver/Driver.cpp:4278
+  if (Args.hasArg(options::OPT_offload_device_only))
+    return C.MakeAction<OffloadAction>(DDeps, types::TY_Nothing);
Same problem as with the host-checking above.

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list