================
@@ -12952,8 +12956,11 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) {
     if (LangOpts.SYCLIsDevice && FD->hasAttr<SYCLKernelEntryPointAttr>())
       return true;
 
-    // FIXME: Functions declared with SYCL_EXTERNAL are required during
-    // device compilation.
+    // Function definitions with the sycl_external attribute are required
+    // during device compilation regardless of whether they are reachable from
+    // a SYCL kernel.
+    if (LangOpts.SYCLIsDevice && FD->hasAttr<SYCLExternalAttr>())
+      return true;
----------------
tahonermann wrote:

@bader, these attributes are enabled during both host and device compilation. 
The semantic effects here are specific to device compilation so we need to 
check for `SYCLIsDevice`.

I'm not in favor of your first suggestion because I think it is useful to keep 
the comments colocated with their associated checks. The second suggestion is 
ok, but I don't see it as an improvement since it implies grouping where there 
is no need to group and might mislead future contributors to think they should 
place SYCL related checks there when that might not be correct. The optimizer 
will effectively transform the current code into your suggestion anyway.

https://github.com/llvm/llvm-project/pull/140282
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to