Improve documentation of INLINE, esp its interactions with other transformations
[ghc-hetmet.git] / compiler / simplCore / CSE.lhs
index 39344fc..e0584ad 100644 (file)
@@ -4,6 +4,13 @@
 \section{Common subexpression}
 
 \begin{code}
+{-# 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
+
 module CSE (
        cseProgram
     ) where
@@ -21,8 +28,10 @@ import CoreLint              ( showPass, endPass )
 import Outputable
 import StaticFlags     ( opt_PprStyle_Debug )
 import BasicTypes      ( isAlwaysActive )
-import Util            ( mapAccumL, lengthExceeds )
+import Util            ( lengthExceeds )
 import UniqFM
+
+import Data.List
 \end{code}
 
 
@@ -162,7 +171,7 @@ Not CSE-ing inside INLINE also solves an annoying bug in CSE. Consider
 a worker/wrapper, in which the worker has turned into a single variable:
        $wf = h
        f = \x -> ...$wf...
-Now CSE may transoform to
+Now CSE may transform to
        f = \x -> ...h...
 But the WorkerInfo for f still says $wf, which is now dead!  This won't
 happen now that we don't look inside INLINEs (which wrappers are).