If the state of the mark would be undefined, you would need either to
clean them up first (over whole cfg), or use bitmaps for the marks.
Both of these approaches bring a risk of quadratic behavior.
Quadratic behaviour? How?
because the places where it is used now (most notably, get_loop_body)
do not look at whole cfg, but just at the loop body.
Oh, I see. So, this is inside a helper, not a pass. How unfortunate.
Perhaps get_loop_body should not use BB_VISITED. What if the pass
calling get_loop_body is using BB_VISITED for its own processing?