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

Joseph Huber via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 27 12:37:06 PDT 2022

jhuber6 added inline comments.

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;
tra wrote:
> jhuber6 wrote:
> > tra wrote:
> > > 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`?
> > Guess I should just use the last argument. Host action is used below, can probably merge these if statements.
> I guess the general idea is to avoid the ambiguity about what controls the behavior of the function. Is that the `Args`, or the `HostAction`?
> Ideally I'd prefer to parse command line options once, save results somewhere we could use them and then use those flargs to control the behavior, regardless of which options were used to specify it. E.g. CUDA/HIPActionBuilder classes have these member fields:
> ```
>   bool CompileHostOnly = false;
>   bool CompileDeviceOnly = false;
> ...
>       Arg *PartialCompilationArg = Args.getLastArg(
>           options::OPT_cuda_host_only, options::OPT_cuda_device_only,
>           options::OPT_cuda_compile_host_device);
>       CompileHostOnly = PartialCompilationArg &&
>                         PartialCompilationArg->getOption().matches(
>                             options::OPT_cuda_host_only);
>       CompileDeviceOnly = PartialCompilationArg &&
>                           PartialCompilationArg->getOption().matches(
>                               options::OPT_cuda_device_only);
> ...
> ```
I more or less copied that below, but I suppose we are recalculating them each phase. We don't have a monolithic class with my new implementation, but I suppose I could add these to the Compilation or something if we don't want to recalculate it. Beside that, does anything else seem amiss?

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list