Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Oct 2019 19:27:02 +0000
From:      bugzilla-noreply@freebsd.org
To:        toolchain@FreeBSD.org
Subject:   [Bug 241550] Base Clang can't compile trivial CUDA programs: error: no matching function for call to '__isnan'
Message-ID:  <bug-241550-29464-1bDXUw5q2S@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-241550-29464@https.bugs.freebsd.org/bugzilla/>
References:  <bug-241550-29464@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=241550

Dimitry Andric <dim@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |antoine@FreeBSD.org

--- Comment #4 from Dimitry Andric <dim@FreeBSD.org> ---
Hm even looking at the tree in the state of just before base r253215, I see
only three instances of __isnan:

lib/libc/gen/isnan.c: __weak_reference(__isnan, isnan);
lib/libc/gen/isnan.c: __isnan(double d)
lib/libc/gen/Symbol.map:        __isnan;

I'm now testing a universe build with this diff:

Index: lib/msun/src/math.h
===================================================================
--- lib/msun/src/math.h (revision 354146)
+++ lib/msun/src/math.h (working copy)
@@ -111,7 +111,7 @@ extern const union __nan_un {
 #define        isfinite(x) __fp_type_select(x, __isfinitef, __isfinite,
__isfinitel)
 #define        isinf(x) __fp_type_select(x, __isinff, __isinf, __isinfl)
 #define        isnan(x) \
-       __fp_type_select(x, __inline_isnanf, __inline_isnan, __inline_isnanl)
+       __fp_type_select(x, __isnanf, __isnan, __isnanl)
 #define        isnormal(x) __fp_type_select(x, __isnormalf, __isnormal,
__isnormall)

 #ifdef __MATH_BUILTIN_RELOPS
@@ -194,7 +194,7 @@ int __signbitf(float) __pure2;
 int    __signbitl(long double) __pure2;

 static __inline int
-__inline_isnan(__const double __x)
+__isnan(__const double __x)
 {

        return (__x != __x);
@@ -201,7 +201,7 @@ static __inline int
 }

 static __inline int
-__inline_isnanf(__const float __x)
+__isnanf(__const float __x)
 {

        return (__x != __x);
@@ -208,7 +208,7 @@ static __inline int
 }

 static __inline int
-__inline_isnanl(__const long double __x)
+__isnanl(__const long double __x)
 {

        return (__x != __x);


If that goes well, maybe it's best to do an exp-run too?  It's more likely that
some ports fall over due to this change, than anything in our base system...

-- 
You are receiving this mail because:
You are the assignee for the bug.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-241550-29464-1bDXUw5q2S>