Please don't forget about changelogs.. > Index: tree.c > =================================================================== > --- tree.c (revision 172802) > +++ tree.c (working copy) > @@ -8513,14 +8513,12 @@ dump_tree_statistics (void)
The crc bits was already reviewed, right? > - else if (entry->checksum != checksum) > + else if (entry->lineno_checksum != lineno_checksum > + || entry->cfg_checksum != cfg_checksum) > { > error ("coverage mismatch for function %u while reading execution > counters", > fn_ident); > - error ("checksum is %x instead of %x", entry->checksum, checksum); > + error ("checksum is (%x,%x) instead of (%x,%x)", > + entry->lineno_checksum, entry->cfg_checksum, > + lineno_checksum, cfg_checksum); Can't we give more informative message whether code changes or it seems to be optimization options disprepancy? > +unsigned > +coverage_compute_cfg_checksum (void) > +{ > + basic_block bb; > + unsigned chksum = n_basic_blocks; > + > + FOR_EACH_BB (bb) > + { > + edge e; > + edge_iterator ei; Perhaps also chksum = crc32_byte (chksum, bb->index) for cases where destination stays the same, but source of edge moves (i.e. with forwarder blocks) Patch is OK, thanks Honza