[Bug lto/47497] [4.6 Regression] SPEC CPU 2006 failed to link with LTO -fuse-linker-plugin -fwhole-program

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Feb 26 14:01:00 GMT 2011


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.



More information about the Gcc-bugs mailing list