karolzwolak wrote:

Compiling openmp code for the `spirv64-intel-unknown` target doesn't work for 
me in the current state.
When compiling openmp code, clang complains about:
```
fatal error: error in backend: cannot select: %50:pid(p0) = G_ADDRSPACE_CAST 
%48:pid(p0) (in function:
      __omp_offloading_fc00_1b60028_main_l11)
```
the culprit variable is
https://github.com/llvm/llvm-project/blob/ae1bd068db293c494c4c6314da3b9d138706460d/openmp/device/src/Configuration.cpp#L30-L32
Removing the `Constant<...>` from the variable fixes the issue.
Additionally, when this patch is cherry picked on the latest main with clang 
23, offload doesn't compile.
```
error: no matching constructor for initialization of 
'Constant<DeviceEnvironmentTy>' (aka '__attribute__((address_space(2))) 
DeviceEnvironmentTy')
   32 |       "protected")]] Constant<DeviceEnvironmentTy> 
__omp_rtl_device_environment;
      |                                                    ^
llvm-project/openmp/device/../../offload/include/Shared/Environment.h:27:8: 
note: candidate constructor ignored: cannot be used to construct an object in 
address space '__attribute__((address_space(2)))'
```
The build error can be fixed by providing an initializer like 
`__omp_rtl_device_environment = {}`, however then we go back to the first 
problem.

https://github.com/llvm/llvm-project/pull/174675
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to