http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53432
Roman Kononov <roman at binarylife dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |roman at binarylife dot net --- Comment #2 from Roman Kononov <roman at binarylife dot net> 2012-05-22 16:11:42 UTC --- Here is a testcase (independent of the original one): $ cat test.cpp struct A; struct B; struct AA { virtual void afoo(A&); }; struct BB { virtual void bfoo(B&); }; template<typename X> void bar(A& a,X& x) { x.afoo(a); } void bar(A& ss,int& x); struct ZZ: BB, AA { int i; void afoo(A& a) { bar(a,i); } void bfoo(B&); }; void bar(A& a) { ZZ zz; bar(a,zz); } $ g++ -c -O2 test.cpp _ZN2ZZ4afooER1A/0 (virtual void ZZ::afoo(A&)) @0x7f1ecda1cc30 Type: function Visibility: public weak comdat comdat_group:_ZN2ZZ4afooER1A one_only section_name:.text._ZN2ZZ4afooER1A virtual Same comdat group as: _ZThn8_N2ZZ4afooER1A/2 Address is taken. References: Referring: _ZTV2ZZ/16 (addr) Availability: not_available Function flags: body finalized Called by: Calls: test.cpp:23:1: internal compiler error: failed to reclaim unneeded function in same comdat group } ^ Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.