================
@@ -432,7 +443,8 @@ void CodeGenFunction::EmitStaticVarDecl(const VarDecl &D,
   bool isCudaSharedVar = getLangOpts().CUDA && getLangOpts().CUDAIsDevice &&
                          D.hasAttr<CUDASharedAttr>();
   // If this value has an initializer, emit it.
-  if (D.getInit() && !isCudaSharedVar) {
+  if (D.getInit() && !isCudaSharedVar &&
+      !(D.isUsableInConstantExpressions(getContext()) && D.isStaticLocal())) {
----------------
Fznamznon wrote:

> So I think D.isStaticLocal() is always true.

I would expect that from a function named `EmitStaticVarDecl`, however It is 
not true at least for some OpenCL variables and if `-fmerge-all-constants` flag 
is passed. Same goes for `getOrCreateStaticVarDecl` since it is called above. I 
need to see what happens a bit more to avoid that check...

https://github.com/llvm/llvm-project/pull/156933
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to