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: V3 patch causes EH failures in ILP32 mode


Benjamin Kosnik wrote:

I haven't yet seen a reply to my concern that adding copy constructors and/or destructors may have changed the V3 ABI between 3.4.0 and 3.4.1. Has anybody on the V3 side done an audit to make sure that nothing was affected? If nobody has done this audit, then would one of the V3 people please do the audit ASAP?


I just did this audit.


Great, thanks!

I'm assuming you mean, definitions of copy
constructors and destructors, and that private declarations w/o
definitions are still fine.


That would still trigger the ABI change -- except that now nobody can copy the objects, so it should not matter. In other words, this is an API change, not an ABI change. Clearly you intended that change, and knew that some programs that used to compile will no longer do so, so I think we're OK.

I see,

__gnu_debug::_Error_formatter

as the only possible issue. Since this is in the debug mode, eh, I'm not worried.
If you feel otherwise, lemme know, and I'll remove this bit.


I'm willing to trust your judgement. If you don't think that changing the ABI for this class matters, that's OK with me.

I'm trying to figure out how to machine-check this. So, you're saying that


class nonpod { int a; }

will be different than

class nonpod
{
	public:
	int a;
nonpod(const nonpod& o) : a(o) {}
}

for:

void foo(nonpod a) // not by ref?
{ }


Correct. Adding either a copy constructor a destructor will trigger the change. This does not only apply to PODs, however; it applies to any class whose copy constructor and destructor would otherwise be trivial. (That includes, for example, classes with base classes, but with no members that themselves have non-trivial constructors.) It also applies to by-value returns as well as by-value parameters.

--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com


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