Verify unallocated edge/BB flags are clear

This adds verification that unused auto_{edge,bb}_flag are not
remaining set but correctly cleared by consumers.  The intent
is that those flags can be cheaply used on a smaller IL region
and thus afterwards clearing can be restricted to the same
small region as well.

2021-09-24  Richard Biener  <rguenther@suse.de>

	* cfghooks.c (verify_flow_info): Verify unallocated BB and
	edge flags are not set.
This commit is contained in:
Richard Biener 2021-09-24 10:13:45 +02:00
parent 204f56aa65
commit 710c6ab4ad

View File

@ -161,6 +161,12 @@ verify_flow_info (void)
err = 1; err = 1;
} }
if (bb->flags & ~cfun->cfg->bb_flags_allocated)
{
error ("verify_flow_info: unallocated flag set on BB %d", bb->index);
err = 1;
}
FOR_EACH_EDGE (e, ei, bb->succs) FOR_EACH_EDGE (e, ei, bb->succs)
{ {
if (last_visited [e->dest->index] == bb) if (last_visited [e->dest->index] == bb)
@ -202,6 +208,13 @@ verify_flow_info (void)
err = 1; err = 1;
} }
if (e->flags & ~cfun->cfg->edge_flags_allocated)
{
error ("verify_flow_info: unallocated edge flag set on %d -> %d",
e->src->index, e->dest->index);
err = 1;
}
edge_checksum[e->dest->index] += (size_t) e; edge_checksum[e->dest->index] += (size_t) e;
} }
if (n_fallthru > 1) if (n_fallthru > 1)