https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114245
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I am trying to understand the issue of having the vtable writing to the object. Is the issue you have an order issue where an object is destroyed but still in use else where, that sounds like an undefined behavior in your code. >you easily run into static de-init fiasco issues Yes this sounds like you are runing into what I have described as being undefined behavior. Changing GCC here just works around the broken code which I doubt is a good idea. If you need a specific order, across TUs, well C++ does not define them. GCC does have an init_priority attribute which could be used here to fix the issue as earlier initializations are deconstructed later.