X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2FDataflow.hs;h=fc1b5769f6df500eb48d651882e904722dd4106c;hp=6c54f73fc2689c55b8cb995d4ee19da52fb50f07;hb=f1a90f54590e5a7a32a9c3ef2950740922b1f425;hpb=ad94d40948668032189ad22a0ad741ac1f645f50 diff --git a/compiler/cmm/Dataflow.hs b/compiler/cmm/Dataflow.hs index 6c54f73..fc1b576 100644 --- a/compiler/cmm/Dataflow.hs +++ b/compiler/cmm/Dataflow.hs @@ -1,9 +1,4 @@ -{-# OPTIONS -w #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and fix --- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings --- for details +{-# OPTIONS -Wall -fno-warn-name-shadowing #-} module Dataflow ( fixedpoint @@ -12,7 +7,7 @@ module Dataflow ( ----------------------------------------------------------------------------- -- | Solve the fixed-point of a dataflow problem. -- --- Complexity: O(N+H*E) calls to 'update' where +-- Complexity: O(N+H*E) calls to the update function where: -- N = number of nodes, -- E = number of edges, -- H = maximum height of the lattice for any particular node. @@ -29,10 +24,10 @@ module Dataflow ( -- that is H*E. The N term of the complexity is from the initial call -- when 'update' will be passed 'Nothing'. fixedpoint :: - (node -> [node]) -- ^ map from nodes to those who's + (node -> [node]) -- map from nodes to those who's -- value depend on the argument node -> (node -> Maybe node -> s -> Maybe s) - -- ^ Given the node which needs to be + -- Given the node which needs to be -- updated, and which node caused that node -- to need to be updated, update the state. -- @@ -42,13 +37,13 @@ fixedpoint :: -- Must return 'Nothing' if no change, -- otherwise returrn 'Just' of the new state. - -> [node] -- ^ Nodes that should initially be updated + -> [node] -- Nodes that should initially be updated - -> s -- ^ Initial state + -> s -- Initial state -- (usually a map from node to -- the value for that node) - -> s -- ^ Final state + -> s -- Final state fixedpoint dependants update nodes state = foldr (fixedpoint' Nothing) state nodes where -- Use a depth first traversal of nodes based on the update graph.