diff mbox series

Verify unallocated edge/BB flags are clear

Message ID 894676n5-66q6-rpnp-74op-1q97p37ns2n5@fhfr.qr
State New
Headers show
Series Verify unallocated edge/BB flags are clear | expand

Commit Message

Richard Biener Sept. 24, 2021, 8:16 a.m. UTC
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.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

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

	* cfghooks.c (verify_flow_info): Verify unallocated BB and
	edge flags are not set.
---
 gcc/cfghooks.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff mbox series

Patch

diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c
index 50b9b177639..6446e16ca8c 100644
--- a/gcc/cfghooks.c
+++ b/gcc/cfghooks.c
@@ -161,6 +161,12 @@  verify_flow_info (void)
 	  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)
 	{
 	  if (last_visited [e->dest->index] == bb)
@@ -202,6 +208,13 @@  verify_flow_info (void)
 	      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;
 	}
       if (n_fallthru > 1)