Fix an egregious strictness analyser bug (Trac #4924)
[ghc-hetmet.git] / compiler / cmm / Dataflow.hs
index 35cf266..fc1b576 100644 (file)
@@ -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/Commentary/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.