X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FDataflow.hs;fp=compiler%2Fcmm%2FDataflow.hs;h=96565c3c58e2724c3ec8203391ba35c70015d6a3;hb=4343368be10030e61acaa8fde2cedbb5fb26918c;hp=939d67de47bfbf72faea15a28c3d64652d4e6591;hpb=8e3b5645e0bab683444c81bbbac87e2df6799959;p=ghc-hetmet.git diff --git a/compiler/cmm/Dataflow.hs b/compiler/cmm/Dataflow.hs index 939d67d..96565c3 100644 --- a/compiler/cmm/Dataflow.hs +++ b/compiler/cmm/Dataflow.hs @@ -1,4 +1,4 @@ -module Dataflow (mapCmmTop, onBasicBlock, cmmLivenessComment, cmmLiveness) where +module Dataflow (cmmLivenessComment, cmmLiveness, CmmLive) where import Cmm import PprCmm () @@ -97,7 +97,7 @@ cmmBlockUpdate :: -> UniqFM {-BlockId-} CmmLive -> Maybe (UniqFM {-BlockId-} CmmLive) cmmBlockUpdate blocks node _ state = - let old_live = lookupWithDefaultUFM state emptyUniqSet node + let old_live = lookupWithDefaultUFM state (panic "unknown block id during liveness analysis") node block = lookupWithDefaultUFM blocks (panic "unknown block id during liveness analysis") node new_live = cmmBlockLive state block in if (sizeUniqSet old_live) == (sizeUniqSet new_live) @@ -127,7 +127,7 @@ cmmBlockNames blocks = listToUFM $ map block_name blocks where cmmLiveness :: [CmmBasicBlock] -> UniqFM {-BlockId-} CmmLive cmmLiveness blocks = fixedpoint (cmmBlockDependants sources) (cmmBlockUpdate blocks') - (map blockId blocks) emptyUFM where + (map blockId blocks) (listToUFM [(blockId b, emptyUniqSet) | b <- blocks]) where (sources, targets) = cmmBlockSourcesAndTargets blocks blocks' = cmmBlockNames blocks @@ -139,11 +139,6 @@ cmmLivenessComment live (BasicBlock ident stmts) = stmts' = (CmmComment $ mkFastString $ showSDoc $ ppr $ live'):stmts live' = map CmmLocal $ uniqSetToList $ lookupWithDefaultUFM live emptyUniqSet ident -onBasicBlock f (CmmProc ds ident args blocks) = CmmProc ds ident args (f blocks) -onBasicBlock f x = x - -mapCmmTop f (Cmm xs) = Cmm (map f xs) - -------------------------------------------------------------------------------- -- Solve a fixed-point of a dataflow problem.