[clang] [CUDA] Treat function-scope statics in device code as device variables (PR #222985)

Pedro Oliveira via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 2 07:26:24 PDT 2026


================
@@ -764,8 +764,19 @@ void SemaCUDA::checkAllowedInitializer(VarDecl *VD) {
   if (VD->isInvalidDecl() || !VD->hasInit() || !VD->hasGlobalStorage() ||
       IsDependentVar(VD))
     return;
+
+  // A function-scope static is a device variable when it is emitted on the
+  // device side, and has the same initialization restrictions. Statics in
+  // implicit HD functions (such as lambdas) are host variables.
+  CUDAVariableTarget VT = IdentifyTarget(VD);
+  const auto *FD = dyn_cast_or_null<FunctionDecl>(VD->getDeclContext());
----------------
pjmc-oliveira wrote:

Hadn't `dyn_cast` was the way to go. Changed it now.

https://github.com/llvm/llvm-project/pull/222985


More information about the cfe-commits mailing list