I am trying to write a backward rustc_mir_dataflow analysis.
Before iterate_to_fixpoint is called, I intentionally remove some edges from the graph (using MirPatch) to prevent data from flowing along those edges.
But this creates a problem, because the rustc code that initializes an analysis's work queue assumes that all blocks are reachable. Because some edges have been removed, not all blocks are reachable.
My questions are:
Is it a "bug" (for lack of a better term) that the work-queue-initialization code assumes all blocks are reachable?
If not, is there some other way to prevent data from flowing along an edge, without removing the edge?