On 04/01/2016 10:47 AM, Nathan Sidwell wrote:
On 04/01/16 10:36, Jason Merrill wrote:
On 04/01/2016 10:33 AM, Nathan Sidwell wrote:
On 04/01/16 10:15, Jason Merrill wrote:
The base object constructor can never be called for a final class,
nor can the
complete object constructor for an abstract one. Does anyone see an
ABI problem
with omitting these variants?
Presumably the same applies to the corresponding destructors? (With any
deleting-dtor behaving the same as the complete-dtor)
Yes, except that virtual complete/deleting destructors always need to be
emitted, to satisfy vtable references.
They could behave as pure virtual, and have the vtable reference
__cxa_pure_virtual. Though that would be an ABI change, in that the
vtable emission might be in a different TU to the virtual destructor
(non)-emitter.
I suppose the destructors could simply be jumps to __cxa_pure_virtual,
without perturbing the ABI. If the destructors are emitted in the same
TU as the vtable, an implementation would be free to reference
__cxa_pure_virtual directly.
Right, the implementation just needs to define the symbol so as not to
break existing references.
Jason
_______________________________________________
cxx-abi-dev mailing list
[email protected]
http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev