util: Predicate the fpclassify fallback on !defined(__cplusplus)
The problem is that the fallbacks we have at the moment don't work in C++. While we could theoretically fix the fallbacks it would also raise the issue of correctly detecting the fpclassify function. So, for now, we'll just disable it until we actually have a C++ user. Reported-by: Tom Stellard <thomas.stellard@amd.com> Tested-by: Tom Stellard <thomas.stellard@amd.com> Tested-by: EdB <edb+mesa@sigluy.net>
This commit is contained in:
parent
3b7747c022
commit
58e8468d11
|
@ -158,7 +158,15 @@ do { \
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(fpclassify)
|
||||
/* The fallbacks below don't work correctly in C++ and properly detecting
|
||||
* FP_NORMAL in C++ is hard. Since we don't use fpclassify in any C++ code
|
||||
* at the moment, we can just predicate this whole thing by not being in
|
||||
* C++ and we shoudld be ok. If we ever want to use fpclassify in a C++
|
||||
* file, we will have to revisit this.
|
||||
*/
|
||||
#ifndef __cplusplus
|
||||
|
||||
#ifdef FP_NORMAL
|
||||
/* ISO C99 says that fpclassify is a macro. Assume that any implementation
|
||||
* of fpclassify, whether it's in a C99 compiler or not, will be a macro.
|
||||
*/
|
||||
|
@ -199,7 +207,7 @@ fpclassify(double x)
|
|||
|
||||
#else
|
||||
|
||||
enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
|
||||
static inline enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
|
||||
fpclassify(double x)
|
||||
{
|
||||
/* XXX do something better someday */
|
||||
|
@ -208,4 +216,6 @@ fpclassify(double x)
|
|||
|
||||
#endif
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* UTIL_MACROS_H */
|
||||
|
|
Loading…
Reference in New Issue