https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80911
--- Comment #14 from Tom de Vries <vries at gcc dot gnu.org> --- (In reply to Martin Liška from comment #11) > Ok, I'm probably starting to know what's wrong. Can you please following > patch and provide me output: > I have not yet been able to reproduce the problem in a standalone build and test (and I need to keep the build I encountered this in undisturbed). So it's not easy for me to try this out atm. OTOH, I think I managed to pin-point the problem with valgrind when running gcov: ... ==23606== Conditional jump or move depends on uninitialised value(s) ==23606== at 0x405E70: read_graph_file() (gcov.c:1391) ==23606== by 0x404BD5: process_file(char const*) (gcov.c:914) ==23606== by 0x40454C: main (gcov.c:666) ==23606== gcov-1.gcno:corrupted gcov-1.gcda:profile mismatch for 'main' ... gcov.c:1391: ... 1388 unsigned mark_catches = 0; 1389 struct arc_info *arc; 1390 1391 if (src >= fn->blocks.size () || fn->blocks[src].succ) 1392 goto corrupt; 1393 1394 while (num_dests--) ... So, AFAIU, the immediate problem is that the corruption test reads uninitialized memory (which I think confirms your analysis).