http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47497
--- Comment #13 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-02-26 13:52:31 UTC --- The think in question (.LTHUNK0.10948) appears in: __base_dtor /613(-1) @0x7f43c6b49000 (asm: _ZN6soplex6SoPlexD2Ev.local.405) availability:available analyzed 194 time, 22 benefit (419 after inlining) 138 size, 22 benefit (239 after inlining) address_taken prevailing_def_ironly finalized inlinable called by: __base_dtor /3839 __base_dtor /3679 __base_dtor /5838 _ZN6soplex9SPxSolverC2ENS_6SoPlex4TypeENS1_14RepresentationE.constprop.576/552 __base_dtor /641 calls: __base_dtor /80 __base_dtor /6133 operator delete []/5260 __base_dtor /292 __base_dtor /611 __base_dtor /292 __base_dtor /611 __base_dtor /611 __base_dtor /292 __base_dtor /292 __base_dtor /292 __base_dtor /292 __base_dtor /292 __base_dtor /292 __base_dtor /292 __base_dtor /4379 (inlined) (1.00 per call) (can throw external) __base_dtor /6460 (inlined) (1.00 per call) operator delete []/5260 (0.51 per call) __base_dtor /292 (1.00 per call) __base_dtor /6087 (inlined) (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /6053 (inlined) (1.00 per call) __base_dtor /6079 (inlined) (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) __base_dtor /292 (1.00 per call) References: var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) fn:__gxx_personality_v0/6126 (addr) In ltrans9 it however appears as __base_dtor /69(-1) @0x7feac53e5840 (asm: _ZN6soplex6SoPlexD2Ev.local.405) availability:available analyzed 194 time, 22 benefit 138 size, 22 benefit needed address_taken prevailing_def_ironly finalized inlinable asm_written called by: calls: References: var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) fn:__gxx_personality_v0/76 (addr) Refering this function: var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) var:_ZTVN6soplex6SoPlexE (addr) aliases & thunks: *.LTHUNK1/75 (asm: *.LTHUNK1.25152) *.LTHUNK0/74 (asm: *.LTHUNK0.74174) __comp_dtor /73 (asm: _ZN6soplex6SoPlexD1Ev.local.406) _ZThn352_N6soplex6SoPlexD1Ev/72 (thunk of *.LTHUNK0 fixed offset -352 virtual value 0 has virtual offset 0) (asm: _ZThn352_N6soplex6SoPlexD1Ev) So apparently the problem is that THUNK0 decl gets two different manglings. (it gets output as *.LTHUNK0.74174) I am puzzled however how this can happen - even if we don't merge alias decls from thunk info, I don't see how local decl can possibly get duplicated.