[EMAIL PROTECTED] wrote:
If we are willing to consider an ABI change, I think an approach that
allows new to call some form of memalign would be better than having the
compiler force alignment after calling new.
Are we open to making an ABI change?
Personally, I think an ABI change, at the compiler level should be off
the table. (I say "Personally" to make clear that this is just my
opinion as a C++ maintainer and as a co-developer of the C++ ABI
specification, but not an SC decision. And, for those who may find
these parentheticals tedious, they're there because some people have
previously interpreted statements from me as dictates; I'm trying to be
very careful to make sure it's clear what hat I'm wearing.)
The C++ ABI has actually been stable for years now, which is a huge
achievement. We've gotten binary interoperability to work for most
programs between a lot of C++ compilers, which is a good thing for all.
In my opinion, the next change to the C++ ABI should come if (and only
if) C++0x requires changes. Even there, I would hope for
backwards-compatible changes -- for example, mangling for variadic
templates would ideally be an extension to the current mangling scheme.
In other words, we should strive to make it possible to link current
C++ libraries with C++0x programs, which means that the sort of change
you're considering would be off the table.
Adding a compiler command-line option to specify the alignment of memory
returned by "operator new", or a GNU attribute that libstdc++ could add
to the default declaration (with a system-dependent value, of course),
etc. seems fine to me, but I'd be very hesitant to change the ABI proper.
--
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713