1 {-# OPTIONS -Wall -fno-warn-name-shadowing #-}
6 import Prelude hiding (last, unzip)
10 -- | Compute the predecessors of each *reachable* block
11 zipPreds :: LastNode l => LGraph m l -> BlockEnv BlockSet
12 zipPreds g = foldl add emptyBlockEnv (postorder_dfs g)
13 where add env block@(Block id _) =
15 let preds = lookupBlockEnv env sid `orElse` emptyBlockSet
16 in extendBlockEnv env sid (extendBlockSet preds id))