Skip to content

Commit b5fd757

Browse files
authored
[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.
1 parent 51c085b commit b5fd757

File tree

3 files changed

+22
-16
lines changed

3 files changed

+22
-16
lines changed

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13173,11 +13173,17 @@ def warn_sycl_external_missing_on_first_decl : Warning<
1317313173

1317413174
// SYCL kernel entry point diagnostics
1317513175
def err_sycl_entry_point_invalid : Error<
13176-
"the %0 attribute cannot be applied to a"
13177-
" %select{non-static member function|variadic function|deleted function|"
13178-
"defaulted function|constexpr function|consteval function|"
13179-
"function declared with the 'noreturn' attribute|coroutine|"
13180-
"function defined with a function try block}1">;
13176+
"the %0 attribute cannot be applied to a %enum_select<InvalidSKEPReason>{"
13177+
"%NonStaticMemberFn{non-static member function}|"
13178+
"%VariadicFn{variadic function}|"
13179+
"%DeletedFn{deleted function}|"
13180+
"%DefaultedFn{defaulted function}|"
13181+
"%ConstexprFn{constexpr function}|"
13182+
"%ConstevalFn{consteval function}|"
13183+
"%NoreturnFn{function declared with the 'noreturn' attribute}|"
13184+
"%Coroutine{coroutine}|"
13185+
"%FunctionTryBlock{function defined with a function try block}"
13186+
"}1">;
1318113187
def err_sycl_entry_point_invalid_redeclaration : Error<
1318213188
"the %0 kernel name argument does not match prior"
1318313189
" declaration%diff{: $ vs $|}1,2">;

clang/lib/Sema/SemaDecl.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16468,19 +16468,19 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation,
1646816468
FD->getAttr<SYCLKernelEntryPointAttr>();
1646916469
if (FD->isDefaulted()) {
1647016470
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
16471-
<< SKEPAttr << /*defaulted function*/ 3;
16471+
<< SKEPAttr << diag::InvalidSKEPReason::DefaultedFn;
1647216472
SKEPAttr->setInvalidAttr();
1647316473
} else if (FD->isDeleted()) {
1647416474
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
16475-
<< SKEPAttr << /*deleted function*/ 2;
16475+
<< SKEPAttr << diag::InvalidSKEPReason::DeletedFn;
1647616476
SKEPAttr->setInvalidAttr();
1647716477
} else if (FSI->isCoroutine()) {
1647816478
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
16479-
<< SKEPAttr << /*coroutine*/ 7;
16479+
<< SKEPAttr << diag::InvalidSKEPReason::Coroutine;
1648016480
SKEPAttr->setInvalidAttr();
1648116481
} else if (Body && isa<CXXTryStmt>(Body)) {
1648216482
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
16483-
<< SKEPAttr << /*function defined with a function try block*/ 8;
16483+
<< SKEPAttr << diag::InvalidSKEPReason::FunctionTryBlock;
1648416484
SKEPAttr->setInvalidAttr();
1648516485
}
1648616486

clang/lib/Sema/SemaSYCL.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -318,40 +318,40 @@ void SemaSYCL::CheckSYCLEntryPointFunctionDecl(FunctionDecl *FD) {
318318
if (const auto *MD = dyn_cast<CXXMethodDecl>(FD)) {
319319
if (!MD->isStatic()) {
320320
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
321-
<< SKEPAttr << /*non-static member function*/ 0;
321+
<< SKEPAttr << diag::InvalidSKEPReason::NonStaticMemberFn;
322322
SKEPAttr->setInvalidAttr();
323323
}
324324
}
325325

326326
if (FD->isVariadic()) {
327327
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
328-
<< SKEPAttr << /*variadic function*/ 1;
328+
<< SKEPAttr << diag::InvalidSKEPReason::VariadicFn;
329329
SKEPAttr->setInvalidAttr();
330330
}
331331

332332
if (FD->isDefaulted()) {
333333
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
334-
<< SKEPAttr << /*defaulted function*/ 3;
334+
<< SKEPAttr << diag::InvalidSKEPReason::DefaultedFn;
335335
SKEPAttr->setInvalidAttr();
336336
} else if (FD->isDeleted()) {
337337
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
338-
<< SKEPAttr << /*deleted function*/ 2;
338+
<< SKEPAttr << diag::InvalidSKEPReason::DeletedFn;
339339
SKEPAttr->setInvalidAttr();
340340
}
341341

342342
if (FD->isConsteval()) {
343343
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
344-
<< SKEPAttr << /*consteval function*/ 5;
344+
<< SKEPAttr << diag::InvalidSKEPReason::ConstevalFn;
345345
SKEPAttr->setInvalidAttr();
346346
} else if (FD->isConstexpr()) {
347347
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
348-
<< SKEPAttr << /*constexpr function*/ 4;
348+
<< SKEPAttr << diag::InvalidSKEPReason::ConstexprFn;
349349
SKEPAttr->setInvalidAttr();
350350
}
351351

352352
if (FD->isNoReturn()) {
353353
Diag(SKEPAttr->getLocation(), diag::err_sycl_entry_point_invalid)
354-
<< SKEPAttr << /*function declared with the 'noreturn' attribute*/ 6;
354+
<< SKEPAttr << diag::InvalidSKEPReason::NoreturnFn;
355355
SKEPAttr->setInvalidAttr();
356356
}
357357

0 commit comments

Comments
 (0)