http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60567
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- --- gcc/symtab.c.jj 2014-03-21 22:23:43.000000000 +0100 +++ gcc/symtab.c 2014-04-09 17:37:40.709523997 +0200 @@ -1312,9 +1312,13 @@ symtab_get_symbol_partitioning_class (sy /* Linker discardable symbols are duplicated to every use unless they are keyed. Keyed symbols or those. */ - if (DECL_ONE_ONLY (node->decl) + if ((HAVE_LTO_PLUGIN + && (flag_use_linker_plugin + || (HAVE_LTO_PLUGIN == 2 + && !global_options_set.x_flag_use_linker_plugin)) + ? (DECL_ONE_ONLY (node->decl) && !node->forced_by_abi) + : DECL_COMDAT (node->decl)) && !node->force_output - && !node->forced_by_abi && !symtab_used_from_object_file_p (node)) return SYMBOL_DUPLICATE; seems to make the ICE go away with -fno-use-linker-plugin or when the linker doesn't support the plugin at all, didn't have to change ipa.c similarly. But why is this happening and why this helps needs analyzing.