This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: cannot pass objects of non-POD type
On Thu, Oct 25, 2007 at 08:44:26AM -0700, Joe Buck wrote:
> One of the purposes of the C++ ABI is to allow different compilers to
> interoperate. The freedom you describe would prevent gcc-compiled
> code from behaving correctly with icc-compiled code, for example.
> So yes, argument passing conventions are part of the ABI.
You're using the term "ABI" too broadly - more than one applies. The
C++ ABI only covers C++ specific additions on top of existing
platform-specific ABIs. It's not a question of freedom.
In any case, it seems that I was wrong. Non-PODs still get passed in
registers if the layout-equivalent POD would, unless there is a
non-trivial copy constructor or destructor; there are non-PODs without
those. Sorry for the confusion.
--
Daniel Jacobowitz
CodeSourcery