================ @@ -15978,6 +15988,24 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, CheckCoroutineWrapper(FD); } + // Diagnose invalid SYCL kernel entry point function declarations. + if (FD && !FD->isInvalidDecl() && !FD->isTemplated() && + FD->hasAttr<SYCLKernelEntryPointAttr>()) { + if (FD->isDeleted()) { + Diag(FD->getAttr<SYCLKernelEntryPointAttr>()->getLocation(), + diag::err_sycl_entry_point_invalid) + << /*deleted function*/ 2; + } else if (FD->isDefaulted()) { + Diag(FD->getAttr<SYCLKernelEntryPointAttr>()->getLocation(), + diag::err_sycl_entry_point_invalid) + << /*defaulted function*/ 3; + } else if (FSI->isCoroutine()) { + Diag(FD->getAttr<SYCLKernelEntryPointAttr>()->getLocation(), + diag::err_sycl_entry_point_invalid) + << /*coroutine*/ 7; ---------------- tahonermann wrote:
Thanks, @AaronBallman. I like the suggested tablegen approach and would be happy to use that if someone (other than me) implemented it! I share your perspective on one-shot enumerations. I'll leave the code as is for now. @erichkeane, as a compromise, I would be happy to split this diagnostic into eight distinct ones to avoid the situation all together. I don't think we gain much by using a single diagnostic in the first place. Let me know if you would prefer that. https://github.com/llvm/llvm-project/pull/120327 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits