http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55466
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-11-28 Ever Confirmed|0 |1 --- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-28 21:26:30 UTC --- The problem is in static void lto_write_globals (void) { tree *vec = lto_global_var_decls->address (); int len = lto_global_var_decls->length (); wrapup_global_declarations (vec, len); emit_debug_global_declarations (vec, len); vec_free (lto_global_var_decls); } LTO no longer maintains its own symbol table and it uses varpool for variables instead. lto_global_var_decls is almost empty. That is why debug info on variables is lost.