[PATCH] D60455: [SYCL] Implement SYCL device code outlining

Alexey Bader via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 27 09:22:47 PST 2019


bader marked an inline comment as done.
bader added inline comments.


================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:2477
 
+  if (LangOpts.SYCLIsDevice && Global->hasAttr<SYCLKernelAttr>()) {
+    // SYCL kernels can be templated and not called from anywhere in the
----------------
ABataev wrote:
> bader wrote:
> > ABataev wrote:
> > > Need to check if the decl must be emitted at all.
> > Let me check that I get it right. You suggest adding `if (MustBeEmitted(Global))`, right?
> > ```
> >   if (LangOpts.SYCLIsDevice && Global->hasAttr<SYCLKernelAttr>() && MustBeEmitted(Global)) {
> >     ...
> >     addDeferredDeclToEmit(GD);
> >     return;
> >   }
> > ```
> Yes
Okay. Making this change requires additional adjustments in the patch and I have a few options.
In this patch we do not add any logic forcing compiler to emit SYCL kernel. This logic is supposed to be added by follow-up patch (currently under SYCL working group review here https://github.com/intel/llvm/pull/249), which add code emitting "externally visible" OpenCL kernel calling function object passed to SYCL kernel function.

I can:
1) Temporally remove CodeGen test and add updated version back with the follow-up patch
2) Do change making SYCL kernels "externally visible" and revert this change with the follow-up patch (this is kind of current logic which emits SYCL kernels unconditionally)
3) Merge two patches and submit them together, but I assume it will significantly increase the size of the patch.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D60455





More information about the cfe-commits mailing list