FDO usability patch -- cfg and lineno checksum

Jan Hubicka hubicka@ucw.cz
Wed Apr 27 16:27:00 GMT 2011


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



More information about the Gcc-patches mailing list