http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56557
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|libstdc++ |lto --- Comment #14 from Jan Hubicka <hubicka at gcc dot gnu.org> 2013-03-12 12:53:17 UTC --- This is the LTO symbol table I get out of the testcase now: U _ZNSdC2Ev U _ZNSdD1Ev U _ZNSdD2Ev U _ZNSiC2Ev U _ZNSiD1Ev U _ZNSiD2Ev U _ZNSoC2Ev U _ZNSoD1Ev U _ZNSoD2Ev U _ZNSt12__basic_fileIcED1Ev U _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv U _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev U _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev U _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev U _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev U _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev U _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev U _ZNSt6localeD1Ev U _ZNSt8ios_baseC2Ev U _ZNSt8ios_baseD2Ev U _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E U _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev U _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev U _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev U _ZTTSd U _ZTTSt13basic_fstreamIcSt11char_traitsIcEE U _ZTVSd U _ZTVSi U _ZTVSo U _ZTVSt13basic_filebufIcSt11char_traitsIcEE U _ZTVSt13basic_fstreamIcSt11char_traitsIcEE U _ZTVSt15basic_streambufIcSt11char_traitsIcEE U _ZTVSt9basic_iosIcSt11char_traitsIcEE U _ZdlPv U __gxx_personality_v0 00000000 T main So still quite a bit more than w/o LTO: U _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev U _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev 0000000000000001 C __gnu_lto_v1 0000000000000000 T main but the construction vtable is no longer on the list. Those extra symbols are from virtual functions we hold for possible devirtualization. We ought to make sure that linkers optimize out the dynamic table entries after we are done with optimizing them out