[PATCH] D60220: [CUDA][Windows] Final fix for bug 38811 (Step 3 of 3)

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 28 10:18:00 PDT 2019


tra added a comment.

In D60220#1723458 <https://reviews.llvm.org/D60220#1723458>, @emankov wrote:

> In D60220#1723350 <https://reviews.llvm.org/D60220#1723350>, @6yearold wrote:
>
> > I'm seeing quite similar errors on FreeBSD with Clang 8 and 9:
> >  Any idea how to fix this?
>
>
> It looks like CUDA doesn't support `double` argument for device function __isnan on FreeBSD.


It's actually the opposite -- FreeBSD does not provide *host*-side `__isnan(double)` -- the error complains that it's the host code that tried to use `__isnan` and failed when overload resolution produced a device variant.

FreeBSD does have host-side implementation of isnan, only it's apparently called `__inline_isnan()` https://github.com/freebsd/freebsd/blob/master/lib/msun/src/math.h#L197
I think the right thing to do here would probably be to define a wrapper __isnan(double) which would call it.

> 
> 
> 1. I'd look at LLVM trunk (10.0.0svn).
> 2. If the issue were not eliminated in the trunk, I'd make a change for FreeBSD similar to https://reviews.llvm.org/rL358654 to provide declarations for that function, allowing math_functions.hpp to compile, but with preventing from any use of it on the device side.




Repository:
  rC Clang

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

https://reviews.llvm.org/D60220





More information about the cfe-commits mailing list