import ZipCfg
import Maybes
-import UniqSet
--- | Compute the predecessors of each *reachable* block
+-- | Compute the predecessors of each /reachable/ block
zipPreds :: LastNode l => LGraph m l -> BlockEnv BlockSet
zipPreds g = foldl add emptyBlockEnv (postorder_dfs g)
where add env block@(Block id _) =
givesUniquePredecessorTo :: LastNode l => LGraph m l -> BlockId -> Bool
givesUniquePredecessorTo g = \id -> elemBlockSet id singlePreds
- -- | accumulates a pair of sets: the set of all blocks containing a single
+ -- accumulates a pair of sets: the set of all blocks containing a single
-- predecessor, and the set of all blocks containing at least two predecessors
where (singlePreds, _) = fold_blocks add (emptyBlockSet, emptyBlockSet) g
add b (single, multi) = foldl add_pred (single, multi) (succs b)
add_pred pair@(single, multi) id =
if elemBlockSet id multi then pair
else if elemBlockSet id single then
- (delOneFromUniqSet single id, extendBlockSet multi id)
+ (removeBlockSet single id, extendBlockSet multi id)
else
(extendBlockSet single id, multi)