Fix c++ ABI failures

Mark Mitchell mark@codesourcery.com
Tue Apr 30 15:25:00 GMT 2002


> Still, the question is how should be classes with non-trivial
> constructors or destructors passes on sparc64, ia64 and other ABIs which
> pass records in registers.

The IA64 C++ ABI is very clear about this.  It says, essentially:

  If you have a non-trivial copy constructor or destructor, you pass in
  memory.

  Otherwise, you do whatever you would have done in C for an equivalent
  structure.

That seems to make sense to me -- independent of the architecture.  Are
you disagreeing?

Note that this is also what G++ has always done -- except that on some
architectures G++ passed in memory even in cases where C would have
passed in registers.  (That's what David and I just fixed.)

The change just makes C++ more like C.

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



More information about the Gcc-patches mailing list