================ @@ -5384,6 +5384,11 @@ LangAS CodeGenModule::GetGlobalVarAddressSpace(const VarDecl *D) { LangAS AS; if (OpenMPRuntime->hasAllocateAttributeForGlobalVar(D, AS)) return AS; + if (LangOpts.OpenMPIsTargetDevice && getTriple().isSPIRV()) ---------------- sarnex wrote:
Thanks for the feedback guys, the SPIR-V address space stuff is a total nightmare so I'll take any feedback I can get. Here's the problem I'm trying to solve. For the code in the test I have: ``` extern int printf(char[]); #pragma omp declare target int global = 0; #pragma omp end declare target int main() { #pragma omp target { for(int i = 0; i < 5; i++) global++; printf("foo"); } return global; } ``` Currently we get this IR ``` @global = global i32 0, align 4 @.str = private unnamed_addr constant [4 x i8] c"foo\00", align 1 ``` Clearly the address space of both is wrong, `addrspace(0)` is not valid in SPIR-V for globals. I think doing it in the target itself is much better, let me update the PR doing that, thanks. https://github.com/llvm/llvm-project/pull/134399 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits