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.
nathan
--
Nathan Sidwell
_______________________________________________
cxx-abi-dev mailing list
[email protected]
http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev