[Bug lto/52400] [4.6/4.7 Regression] lto1: ICE with extern on static linkage

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Feb 27 14:51:00 GMT 2012


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |ASSIGNED
                 CC|                            |hubicka at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org
      Known to work|                            |4.5.3
         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org
                   |gnu.org                     |
   Target Milestone|---                         |4.6.4
            Summary|lto1: ICE with extern on    |[4.6/4.7 Regression] lto1:
                   |static linkage              |ICE with extern on static
                   |                            |linkage
      Known to fail|                            |4.6.2, 4.7.0

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-27 14:50:37 UTC ---
Confirmed.  We do not handle having multiple functions with the same name
(but pulled in into different contexts) well.  I suppose the particular
error can be fixed by

Index: gcc/lto/lto.c
===================================================================
--- gcc/lto/lto.c       (revision 184591)
+++ gcc/lto/lto.c       (working copy)
@@ -689,13 +689,6 @@ lto_register_function_decl_in_symtab (st
          lto_record_renamed_decl (data_in->file_data,
                                   IDENTIFIER_POINTER (old_assembler_name),
                                   IDENTIFIER_POINTER (new_assembler_name));
-
-         /* Also register the reverse mapping so that we can find the
-            new name given to an existing assembler name (used when
-            restoring alias pairs in input_constructors_or_inits.  */
-         lto_record_renamed_decl (data_in->file_data,
-                                  IDENTIFIER_POINTER (new_assembler_name),
-                                  IDENTIFIER_POINTER (old_assembler_name));
        }
     }

as the reverse mapping should be unused now with the alias-pair rewrite. 
Honza?



More information about the Gcc-bugs mailing list