http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55051
--- Comment #27 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-11-16 17:42:26 UTC --- /* Now merge each file. */ for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr->next) { // Open existing gcda file for gi_ptr // Find program summary corresponding to this executable -> save in prg // Merge execution counts for each function // Merge program summary // - If this is the first merged file for this execution, save merged summary in all_prg // - Otherwise if #runs the same in prg and all_prg, print error message if prg != all_prg. // Write merged gcda } Hmm, yes, it seems wrong. We can not expect all gcda files to have same number of runs. We really need to process sum_all & friends locally for each file. Only I suppose we can check if number of runs of the prg happens to match the last merged file then sum_all should match. That would be nice consistency check. If the bootstrap works with this change, consider the patch preapproved.