New issue: __int64 and friends
Jim Dehnert
dehnert at baalbek.engr.sgi.com
Fri Mar 10 00:09:12 UTC 2000
The IA-64 software conventions define a number of implementation
types: __int64, __int128 (and unsigned versions), __float80, and
__float128. For those that match builtin types, i.e. __int64 and
__float80, this raises the question of whether they are intended
to be treated as typedefs of builtin types, or as new types.
In C, the significance is limited. When matching function declarations
(prototypes and definitions), typedefs match but distinct types don't.
I can't think of any other place where default conversions and
identical representation won't hide the difference.
In C++, the effects are more dramatic. Most important, perhaps, is
that distinct types will cause different mangling. So the C++ ABI
group needs to know the choice.
My preference would be the typedef treatment, specifically:
__int64 == long long (because it can be the same for both
32-bit and 64-bit ABIs)
__float80 == long double
On a related note, the SW Conventions document says (in a footnote)
that it is defining the __float128 so that everyone implementing it
will have matching representations, but it doesn't specify the
representation.
Jim
- Jim Dehnert x3-4272
More information about the cxx-abi-dev
mailing list