aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaCUDA.cpp
diff options
context:
space:
mode:
authorTang Jiajun <jiajun.tang@intel.com>2025-09-17 13:05:57 +0800
committerGitHub <noreply@github.com>2025-09-17 13:05:57 +0800
commit6d5c94203652a52b51b37ad4768bc1a7066f029c (patch)
tree48334f503d37345866036dbd3d532bcaf1000ff5 /clang/lib/Sema/SemaCUDA.cpp
parentc286a427b977fc1df0871ceed9916070a38a1d22 (diff)
downloadllvm-6d5c94203652a52b51b37ad4768bc1a7066f029c.zip
llvm-6d5c94203652a52b51b37ad4768bc1a7066f029c.tar.gz
llvm-6d5c94203652a52b51b37ad4768bc1a7066f029c.tar.bz2
[clang] [CUDA] Support calling `consteval` function between different target. (#158688)
In CUDA, calling `consteval` functions cross excution space is allowed. So the function with `consteval` attribute need be treated as a `__host__ __device__` function.
Diffstat (limited to 'clang/lib/Sema/SemaCUDA.cpp')
-rw-r--r--clang/lib/Sema/SemaCUDA.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaCUDA.cpp b/clang/lib/Sema/SemaCUDA.cpp
index 2e3cbb3..31735a0 100644
--- a/clang/lib/Sema/SemaCUDA.cpp
+++ b/clang/lib/Sema/SemaCUDA.cpp
@@ -143,6 +143,9 @@ CUDAFunctionTarget SemaCUDA::IdentifyTarget(const FunctionDecl *D,
if (D->hasAttr<CUDAGlobalAttr>())
return CUDAFunctionTarget::Global;
+ if (D->isConsteval())
+ return CUDAFunctionTarget::HostDevice;
+
if (hasAttr<CUDADeviceAttr>(D, IgnoreImplicitHDAttr)) {
if (hasAttr<CUDAHostAttr>(D, IgnoreImplicitHDAttr))
return CUDAFunctionTarget::HostDevice;