[Mesa-dev] [PATCH] util: Predicate the fpclassify fallback on !defined(__cplusplus)

EdB edb+mesa at sigluy.net
Wed Jan 28 11:29:48 PST 2015


On Wednesday 28 January 2015 11:20:10 Tom Stellard wrote:
> 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>
Tested-by: EdB <edb+mesa at sigluy.net>
> 
> > 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 */
> 
> _______________________________________________
> 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