https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64988
--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The problem here is that inliner dissolves comdat group it should not. We inline comdat local function and the fact we can remove it from program does not mean we can dissolve the group. I am testing: Index: ipa-inline-transform.c =================================================================== --- ipa-inline-transform.c (revision 221092) +++ ipa-inline-transform.c (working copy) @@ -213,7 +213,7 @@ clone_inlined_nodes (struct cgraph_edge For now we keep the ohter functions in the group in program until cgraph_remove_unreachable_functions gets rid of them. */ gcc_assert (!e->callee->global.inlined_to); - e->callee->dissolve_same_comdat_group_list (); + e->callee->remove_from_same_comdat_group (); if (e->callee->definition && inline_account_function_p (e->callee)) {