[Bug lto/54709] [4.8 Regression] r191713 breaks Firefox build

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 26 13:33:00 GMT 2012


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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hubicka at gcc dot gnu.org

--- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-26 13:33:07 UTC ---
For non-LTO binds_local_p says no to memcpy, for LTO it says yes.

  else if (TREE_CODE (exp) == FUNCTION_DECL && TREE_PUBLIC (exp))
    {
      struct cgraph_node *node = cgraph_get_node (exp);
      if (node
          && resolution_local_p (node->symbol.resolution))
        resolved_locally = true;

makes the difference because we have a resolution recorded (resoved_ir) and
that makes us skip


  /* Variables defined outside this object might not be local.  */
  else if (DECL_EXTERNAL (exp) && !resolved_locally)
    local_p = false;

and fall into

  /* If defined in this object and visibility is not default, must be
     local.  */
  else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
    local_p = true;

which says "defined in this object" but doesn't check that (well,
the resolution is wrong).

The resolutions from the linker are just

2
t1.o 1
165 beb4fef7e77e8790 PREVAILING_DEF_IRONLY foo
t2.o 1
165 6eae315f149cc09b PREVAILING_DEF_IRONLY bar

but lto_symtab_resolve_symbols assigns LDPR_RESOLVED_IR :(



More information about the Gcc-bugs mailing list