error in object.h (CLN) ?

Richard B. Kreckel kreckel at thep.physik.uni-mainz.de
Mon Apr 5 21:38:22 CEST 2004


On Sun, 4 Apr 2004, Fausto Saporito wrote:
> following my previous posting about cln compiling under VMS (Alpha
> arch) I found an error (???) in object.h file.
> The cl_word_alignment for alpha machines is 8, but in this define
> there's no such value:
>
> // Definition of the tags.
> #if !defined(CL_WIDE_POINTERS)
>    #if (cl_word_alignment == 2)
>      #define cl_FN_tag   1
>      #define cl_SF_tag   3       // must satisfy the cl_immediate_p
> predicate!
>    #endif
>    #if (cl_word_alignment == 4)
>      #define cl_FN_tag   1
>      #define cl_SF_tag   2
>    #endif
> #else // CL_WIDE_POINTERS
>    // Single Floats are immediate as well.
>    #define cl_FN_tag     1
>    #define cl_SF_tag     2
>    #define cl_FF_tag     3
> #endif
>
> There's only 2 and 4.
> Now CL_WIDE_POINTERS is defined only if long_bitsize is 64,

Where did you get that from?  In cln/objec.h:70 it's defined only if
cl_pointer_size is 64.  And these two are a priori unrelated.

>                                                             I checked
> in my intparam.h (generated by intparam.c) and long_bitsize is 32. Is
> it correct for an Alpha machine?

This depends on the ABI definition.  On UNICOS Max, for instance, even an
int is 64 bit.  OTOH, those cranks at MS want long to be 32 bits, even on
64 bit architectures.  I'm surprised to hear that VMS does this, too.

> Maybe it's correct that 8 is missing because in this case
> CL_WIDE_POINTERS should be defined and all is fine.

Yes, I guess this should be the case.

Regards
    -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>




More information about the GiNaC-devel mailing list