fodinabor requested changes to this revision.
fodinabor added a comment.
This revision now requires changes to proceed.

citing from https://reviews.llvm.org/rG7f1e6fcff9427adfa8efa3bfeeeac801da788b87:

> Due to recent changes we cannot use OpenMP in CUDA files anymore (PR45533) as 
> the math handling of CUDA is different when _OPENMP is defined. We actually 
> want this different behavior only if we are offloading with OpenMP to NVIDIA, 
> thus generating NVPTX.

`_OPENMP` is defined even when only the CPU backend is targeted, when using 
`-fopenmp`. But then e.g. the OpenMP `__nv_isnand` variant is chosen for 
`_ISNANd` which is not defined if using CPU OpenMP and CUDA.

Applying this patch thus leads to this bunch of errors for `clang -x cuda 
-fopenmp /dev/null -o /dev/null --cuda-gpu-arch=sm_70`

  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:98:7:
 error: no matching function for call to '__nv_isnand'
    if (_ISNANd(__real__(z)) && _ISNANd(__imag__(z))) {
        ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:66:17:
 note: expanded from macro '_ISNANd'
  #define _ISNANd __nv_isnand
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:226:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isnand(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:98:31:
 error: no matching function for call to '__nv_isnand'
    if (_ISNANd(__real__(z)) && _ISNANd(__imag__(z))) {
                                ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:66:17:
 note: expanded from macro '_ISNANd'
  #define _ISNANd __nv_isnand
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:226:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isnand(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:100:9:
 error: no matching function for call to '__nv_isinfd'
      if (_ISINFd(__a) || _ISINFd(__b)) {
          ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:100:25:
 error: no matching function for call to '__nv_isinfd'
      if (_ISINFd(__a) || _ISINFd(__b)) {
                          ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:101:24:
 error: no matching function for call to '__nv_isinfd'
        __a = _COPYSIGNd(_ISINFd(__a) ? 1 : 0, __a);
                         ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:101:13:
 error: no matching function for call to '__nv_copysign'
        __a = _COPYSIGNd(_ISINFd(__a) ? 1 : 0, __a);
              ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:102:24:
 error: no matching function for call to '__nv_isinfd'
        __b = _COPYSIGNd(_ISINFd(__b) ? 1 : 0, __b);
                         ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:102:13:
 error: no matching function for call to '__nv_copysign'
        __b = _COPYSIGNd(_ISINFd(__b) ? 1 : 0, __b);
              ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:103:11:
 error: no matching function for call to '__nv_isnand'
        if (_ISNANd(__c))
            ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:66:17:
 note: expanded from macro '_ISNANd'
  #define _ISNANd __nv_isnand
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:226:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isnand(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:104:15:
 error: no matching function for call to '__nv_copysign'
          __c = _COPYSIGNd(0, __c);
                ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:105:11:
 error: no matching function for call to '__nv_isnand'
        if (_ISNANd(__d))
            ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:66:17:
 note: expanded from macro '_ISNANd'
  #define _ISNANd __nv_isnand
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:226:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isnand(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:106:15:
 error: no matching function for call to '__nv_copysign'
          __d = _COPYSIGNd(0, __d);
                ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:109:9:
 error: no matching function for call to '__nv_isinfd'
      if (_ISINFd(__c) || _ISINFd(__d)) {
          ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:109:25:
 error: no matching function for call to '__nv_isinfd'
      if (_ISINFd(__c) || _ISINFd(__d)) {
                          ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:110:24:
 error: no matching function for call to '__nv_isinfd'
        __c = _COPYSIGNd(_ISINFd(__c) ? 1 : 0, __c);
                         ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:110:13:
 error: no matching function for call to '__nv_copysign'
        __c = _COPYSIGNd(_ISINFd(__c) ? 1 : 0, __c);
              ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:111:24:
 error: no matching function for call to '__nv_isinfd'
        __d = _COPYSIGNd(_ISINFd(__d) ? 1 : 0, __d);
                         ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:68:17:
 note: expanded from macro '_ISINFd'
  #define _ISINFd __nv_isinfd
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:224:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isinfd(double __a);
                 ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:111:13:
 error: no matching function for call to '__nv_copysign'
        __d = _COPYSIGNd(_ISINFd(__d) ? 1 : 0, __d);
              ^~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:72:20:
 note: expanded from macro '_COPYSIGNd'
  #define _COPYSIGNd __nv_copysign
                     ^~~~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:47:19:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ double __nv_copysign(double __a, double __b);
                    ^
  In file included from <built-in>:1:
  In file included from 
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_runtime_wrapper.h:419:
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:112:11:
 error: no matching function for call to '__nv_isnand'
        if (_ISNANd(__a))
            ^~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_complex_builtins.h:66:17:
 note: expanded from macro '_ISNANd'
  #define _ISNANd __nv_isnand
                  ^~~~~~~~~~~
  
/home/joachim/Projekte/install/lib/clang/13.0.0/include/__clang_cuda_libdevice_declares.h:226:16:
 note: candidate function not viable: call to __device__ function from __host__ 
function
  __DEVICE__ int __nv_isnand(double __a);
                 ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated when compiling for host.

I will try to bring up a patch with a regression test for this.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105221/new/

https://reviews.llvm.org/D105221

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to