================
@@ -12937,6 +12937,10 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) {
if (D->hasAttr<WeakRefAttr>())
return false;
+ if (LangOpts.SYCLIsDevice && !D->hasAttr<SYCLKernelEntryPointAttr>() &&
+ !D->hasAttr<SYCLExternalAttr>())
----------------
erichkeane wrote:
An additional thought after clicking 'start-review': Perhaps something like:
```
// Comment explaining that on a sycl device, the ONLY thing we emit is
functions (not variables), and ONLY those that have one of these two attributes.
if (LangOpts.SYCLIsDevice)
return isa<FunctionDecl>(D) && (D->hasAttr<...>() || D->hasAttr<....>());
```
I'm realizing as I look through this more, part of my problem is the vascus
relationship between this section, the fact that these two attributes are only
legal on a function decl, and the part on line 12948. So there are three
sizable parts of logic scattered around the program that makes this REALLY
awful to figure out.
https://github.com/llvm/llvm-project/pull/140282
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits