Question about guard variable types

Mark Mitchell mark at codesourcery.com
Thu Dec 5 19:51:14 UTC 2002


The ABI document describes guard variables (2.8) and gaurd variable
routines (3.3.2).

The variables are required to have a 64-bit type (which type is not
specified), while the routines take an "__int64_t *" as a paramter.

On IPF systems, __int64_t is "long long"; that is why the mangling
indicates that those two types should have the same mangled name.  (The
"__int64_t" type is an IPF-specific type; the C99 standard describes
"int64_t".)

It's a bit odd to require 64-bit types on all platforms; some may not
have them.  

In trying to make the ABI platform-independent, I think we should just
use "long long" on all platforms.  This is not a change on IPF
platforms, but is sensible on all platforms.  G++ already uses "long
long" on all platforms.

It's true that a C++ compiler is not required to support long long,
but using any other type would be a change on IPF platforms.

Thoughts, objections?

Comments from people with non-64 bit implementations?

--
Mark Mitchell                   mark at codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com




More information about the cxx-abi-dev mailing list