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