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



--- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-09-26 
13:47:02 UTC ---

Index: gcc/lto-symtab.c

===================================================================

--- gcc/lto-symtab.c    (revision 191756)

+++ gcc/lto-symtab.c    (working copy)

@@ -326,11 +326,7 @@ lto_symtab_resolve_symbols (symtab_node

   for (e = first; e; e = e->symbol.next_sharing_asm_name)

     {

       if (!lto_symtab_resolve_can_prevail_p (e))

-       {

-         e->symbol.resolution = LDPR_RESOLVED_IR;

-          set_resolution_guessed (e, true);

-         continue;

-       }

+       continue;



       /* Set a default resolution - the final prevailing one will get

          adjusted later.  */

@@ -387,9 +383,25 @@ lto_symtab_resolve_symbols (symtab_node

     }



   if (!prevailing)

-    return;

+    {

+      /* There was no prevailing definition - adjust the symbol resolutions

+         according to that.  */

+      for (e = first; e; e = e->symbol.next_sharing_asm_name)

+       e->symbol.resolution = LDPR_UNDEF;

+      return;

+    }



 found:

+  /* We found a prevailing definition - adjust the pre-empted symbols

+     resolutions.  */

+  for (e = first; e; e = e->symbol.next_sharing_asm_name)

+    {

+      if (!lto_symtab_resolve_can_prevail_p (e))

+       {

+         e->symbol.resolution = LDPR_RESOLVED_IR;

+         set_resolution_guessed (e, true);

+       }

+    }

   /* If current lto files represent the whole program,

     it is correct to use LDPR_PREVALING_DEF_IRONLY.

     If current lto files are part of whole program, internal



fixes the testcase for me.

Reply via email to