This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]