http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678
--- Comment #25 from Jason Merrill <jason at gcc dot gnu.org> --- OK, this testcase wasn't affected by my earlier patch because ~Part is user-defined, so it's fair game for devirtualization. I notice, however, that in the unreduced testcase Part is an abstract class, so it doesn't make sense to choose its destructor for speculative devirtualization: that can never be the right answer. I'll fix that.