Author: Tom Honermann Date: 2025-12-20T22:36:05-05:00 New Revision: b5fd7572ed3ccca94118e3bcf244b1ab08f336c5
URL: https://github.com/llvm/llvm-project/commit/b5fd7572ed3ccca94118e3bcf244b1ab08f336c5 DIFF: https://github.com/llvm/llvm-project/commit/b5fd7572ed3ccca94118e3bcf244b1ab08f336c5.diff LOG: [Clang][SYCL][NFC] Modify err_sycl_entry_point_invalid to use %enum_select. (#173122) The `err_sycl_entry_point_invalid` diagnostic has a selection field for which there are already many options with more expected to be added. Use of `%enum_select` avoids the need for magic numbers with associated comments at source locations where the diagnostic is issued. Added: Modified: clang/include/clang/Basic/DiagnosticSemaKinds.td clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaSYCL.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 9ff22b03ec86d..6c6a26614ad0e 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -13173,11 +13173,17 @@ def warn_sycl_external_missing_on_first_decl : Warning< // SYCL kernel entry point diagnostics def err_sycl_entry_point_invalid : Error< - "the %0 attribute cannot be applied to a" - " %select{non-static member function|variadic function|deleted function|" - "defaulted function|constexpr function|consteval function|" - "function declared with the 'noreturn' attribute|coroutine|" - "function defined with a function try block}1">; + "the %0 attribute cannot be applied to a %enum_select<InvalidSKEPReason>{" + "%NonStaticMemberFn{non-static member function}|" + "%VariadicFn{variadic function}|" + "%DeletedFn{deleted function}|" + "%DefaultedFn{defaulted function}|" + "%ConstexprFn{constexpr function}|" + "%ConstevalFn{consteval function}|" + "%NoreturnFn{function declared with the 'noreturn' attribute}|" + "%Coroutine{coroutine}|" + "%FunctionTryBlock{function defined with a function try block}" + "}1">; def err_sycl_entry_point_invalid_redeclaration : Error< "the %0 kernel name argument does not match prior" " declaration% diff {: $ vs $|}1,2">; diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 72039cc164d88..5da665a5acad2 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -16468,19 +16468,19 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation, FD->getAttr<SYCLKernelEntryPointAttr>(); if (FD->isDefaulted()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*defaulted function*/ 3; + << SKEPAttr << diag::InvalidSKEPReason::DefaultedFn; SKEPAttr->setInvalidAttr(); } else if (FD->isDeleted()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*deleted function*/ 2; + << SKEPAttr << diag::InvalidSKEPReason::DeletedFn; SKEPAttr->setInvalidAttr(); } else if (FSI->isCoroutine()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*coroutine*/ 7; + << SKEPAttr << diag::InvalidSKEPReason::Coroutine; SKEPAttr->setInvalidAttr(); } else if (Body && isa<CXXTryStmt>(Body)) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*function defined with a function try block*/ 8; + << SKEPAttr << diag::InvalidSKEPReason::FunctionTryBlock; SKEPAttr->setInvalidAttr(); } diff --git a/clang/lib/Sema/SemaSYCL.cpp b/clang/lib/Sema/SemaSYCL.cpp index 67f3856c10615..280f9b1a4b42d 100644 --- a/clang/lib/Sema/SemaSYCL.cpp +++ b/clang/lib/Sema/SemaSYCL.cpp @@ -318,40 +318,40 @@ void SemaSYCL::CheckSYCLEntryPointFunctionDecl(FunctionDecl *FD) { if (const auto *MD = dyn_cast<CXXMethodDecl>(FD)) { if (!MD->isStatic()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*non-static member function*/ 0; + << SKEPAttr << diag::InvalidSKEPReason::NonStaticMemberFn; SKEPAttr->setInvalidAttr(); } } if (FD->isVariadic()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*variadic function*/ 1; + << SKEPAttr << diag::InvalidSKEPReason::VariadicFn; SKEPAttr->setInvalidAttr(); } if (FD->isDefaulted()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*defaulted function*/ 3; + << SKEPAttr << diag::InvalidSKEPReason::DefaultedFn; SKEPAttr->setInvalidAttr(); } else if (FD->isDeleted()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*deleted function*/ 2; + << SKEPAttr << diag::InvalidSKEPReason::DeletedFn; SKEPAttr->setInvalidAttr(); } if (FD->isConsteval()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*consteval function*/ 5; + << SKEPAttr << diag::InvalidSKEPReason::ConstevalFn; SKEPAttr->setInvalidAttr(); } else if (FD->isConstexpr()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*constexpr function*/ 4; + << SKEPAttr << diag::InvalidSKEPReason::ConstexprFn; SKEPAttr->setInvalidAttr(); } if (FD->isNoReturn()) { Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid) - << SKEPAttr << /*function declared with the 'noreturn' attribute*/ 6; + << SKEPAttr << diag::InvalidSKEPReason::NoreturnFn; SKEPAttr->setInvalidAttr(); } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
