http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51663
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-01-04 12:49:47 UTC --- It's interesting that with a simplified testcase struct T; static T *m () { static T *d; return d; } int fn () { m (); } int main() {} The C++ frontend with -fwhole-program no longer removes m::d, so this is maybe a general issue, not LTO specific.