[clang] [clang][SYCL] Add sycl_external attribute and restrict emitting device code (PR #140282)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 23 06:10:53 PDT 2025
================
@@ -4084,6 +4084,19 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S,
diag::note_carries_dependency_missing_first_decl) << 0/*Function*/;
}
+ // SYCL 2020 section 5.10.1, "SYCL functions and member functions linkage":
+ // When a function is declared with SYCL_EXTERNAL, that macro must be
+ // used on the first declaration of that function in the translation unit.
+ // Redeclarations of the function in the same translation unit may
+ // optionally use SYCL_EXTERNAL, but this is not required.
+ const SYCLExternalAttr *SEA = New->getAttr<SYCLExternalAttr>();
+ if (SEA && !Old->hasAttr<SYCLExternalAttr>()) {
----------------
erichkeane wrote:
To be consistent with the rest of our attributes, I'd probably suggest we support adding it up until definition. We can then do a conformance warning instead of error, but still let it work.
https://github.com/llvm/llvm-project/pull/140282
More information about the cfe-commits
mailing list