https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64642
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Well, you invoke undefined behavior here which means GCC can do anything it wants. In this case it simply marks the virtual call unreachable and simplifies the code according to that.