Chris Robinson wrote: [...]
Out of curiousity, then, does this affect static functions that are used for COM objects? It's typical for those to be marked as static, their address put into a (possibly static) vtable struct, which is then used as a field for an allocated struct passed to the user.
Functions used for COM objects are not impacted. The compiler sees that their address is taken and thus that they may be called from outside the current compilation unit. It then knows it's not allowed to change their calling convention and the bug is averted.