https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66468
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Markus Trippelsdorf from comment #2) > The testcase is invalid: > > markus@x4 testc % g++ -r -nostdlib a.ii c.ii e.ii -g -O2 -flto > a.ii:21:8: warning: ‘Run’ violates the C++ One Definition Rule [-Wodr] > void Run (Point &) const; > ^ > e.ii:25:1: note: return value type mismatch > Optimizer::Run (Point &) const > ^ > e.ii:25:1: note: type ‘float’ should match type ‘void’ > e.ii:25:1: note: ‘Run’ was previously declared here > e.ii: In member function ‘__base_dtor ’: > e.ii:28:1: internal compiler error: in check_die, at dwarf2out.c:5712 > } > ^ You are right. However, I guess we should not ICE? Martin