Matthew Jones <matthewjones@xxxxxxxxxxxxxx> writes: > I am seeing dupicated ctors & dtors in my object files. For large classes this > leads to considerable bloat. And debugging is a pain as only 1 version is > linked to the source, and we inevitably see the other one being called. > > I found a previous question about this: > http://gcc.gnu.org/ml/gcc-help/2004-11/msg00158.html which exactly describes > what I am seeing, but the answer is not particularly relevant. I get this with > simple non-virtual classes: One is the "complete object constructor" and the other is the "base object constructor." The difference is that the "complete object constructor" also constructs the virtual base classes. I have no idea why g++ generates both for classes with no virtual base classes. And if there is some reason for that, then I have no idea why, when the functions are identical, it doesn't simply use two symbol names for two instances of the function. This is gcc PR 3187 (http://gcc.gnu.org/PR3187). I see that that PR has been suspended, although I don't agree with the cited reason; we don't need to do any ABI work to emit two symbols for one copy of the constructor. Ian