[Mesa-dev] [PATCH] util: Predicate the fpclassify fallback on !defined(__cplusplus)
Tom Stellard
tom at stellard.net
Wed Jan 28 11:20:10 PST 2015
On Wed, Jan 28, 2015 at 10:44:57AM -0800, Jason Ekstrand wrote:
> 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.
>
Tested-by: Tom Stellard <thomas.stellard at amd.com>
> Reported-by: Tom Stellard <tom at stellard.net>
Should use my AMD email here too ^ or you can drop this line all together if you want.
-Tom
> ---
> src/util/macros.h | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/util/macros.h b/src/util/macros.h
> index 180f2f6..74bd8bf 100644
> --- a/src/util/macros.h
> +++ b/src/util/macros.h
> @@ -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 */
> --
> 2.2.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list