http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53808
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> --- With Jason's patch I get: In undef.cpp we devirtualize to _ZN3fooD2Ev: Type: function Visibility: external public References: Referring: Function flags: Called by: _ZN3barD2Ev/8 (1.00 per call) Calls: It is external and we expect it to be available. In def.cpp: _ZN3fooD2Ev/9 (foo::~foo()) @0x7f6fe5082720 Type: function Visibility: external public References: Referring: Function flags: Called by: _ZN3barD2Ev/3 (1.00 per call) Calls: So I correctly get undefined reference to foo destructor. It indeed seems undefined in the testcase. Without Jason's patch I get undefined bar destructor, that seems wrong. Jason, I thus thunk your patch is sufficient to fix the PR. Can you commit it?