Two or three initial observations on the fp prining patch

Paolo Carlini pcarlini@unitus.it
Thu Nov 20 15:51:00 GMT 2003


Jerry Quinn wrote:

>Paolo Carlini writes:
> > Andreas Jaeger wrote:
> > 
> > >I would propose unsigned int for uint32_t instead of unsigned long...
> > >  
> > >
> > I see, because long is 64 bit on 64 bit machines, right? Ok, I have just 
> > re-read
> > section 4.2 of your paper for GCC Summit and everything is clear!
>
>Can we rely on (unsigned) int to be 32 bits on all supported
>platforms?  If so, great.  The language doesn't require that, though.
>
Indeed, it doesn't. But it requires at least 16 bits.
So, not many possibilites... 16, 32 (64 seems unlikely to me for int (vs 
long))

In v2's gen-params there is:

# Figure out integral type sizes.

default_int16='short /* deduction failed */'
default_int32='long /* deduction failed */'
INT16=32767
INT32=2147483647

if [ "${SHRT_MAX}" = $INT16 ] ; then
  default_int16='short /* deduced */'
  if [ "${LONG_MAX}" = $INT32 ] ; then
    default_int32='long /* deduced */'
  elif [ "${INT_MAX}" = $INT32 ] ; then
    default_int32='int /* deduced */'
  fi
fi

So, we can envisage a simple autoconf test for this, including 
<limits.h> and
computing the answer. How? I didn't know exactly 'til now but then I 
discovered
this cute way in our current acinclude.m4:

  AC_EGREP_CPP([_GLIBCXX_ok], [
  #include <features.h>
  #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
  _GLIBCXX_ok
  #endif
  ], enable_clocale_flag=gnu, enable_clocale_flag=generic)

Funny: you define or not a macro and then look for it in the 
preprocessed code!

Most probably there are other ways, though... Anyone wanting to help? 
Otherwise
I will look into it more closely myself...

Paolo.



More information about the Libstdc++ mailing list