[Bug lto/54095] Unnecessary static variable renaming

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Sep 25 09:39:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54095

--- Comment #8 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-25 09:38:44 UTC ---
Including the boundary as with

          /* If there is a symbol in the set that shares the same
             asm name than NODE, rename NODE.  */
          if (!TREE_PUBLIC (decl)
              && symtab_real_symbol_p (node))
            for (s = symtab_node_for_asm (DECL_ASSEMBLER_NAME (decl));
                 s; s = s->symbol.next_sharing_asm_name)
              if (s != node
                  && symtab_real_symbol_p (s)
                  && (lto_symtab_encoder_in_partition_p (encoder, s)
                      || (symtab_function_p (s)
                          && lto_symtab_encoder_encode_body_p (encoder, cgraph
(s)))))

doesn't fix it (but is probably needed?).  Looking in how lto-streamer-out.c
iterates over bodies to stream I notice it doesn't use the iterator (cosmetic)
and it doesn't check symtab_real_symbol_p but lto_symtab_encoder_encode_body_p
plus !node->alias && !node->thunk.thunk_p.  So I should probably use that
check instead of what I used above (well, for functions at least).  Trying
an assert in lto-streamer-out.c that we only stream symtab_real_symbol_p's.



More information about the Gcc-bugs mailing list