X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FsimplCore%2FSimplEnv.lhs;h=699ba7be15f39b8ee390907894efb6fe606c34dc;hb=c0fe534fbf3d3e30a6f35b355da86e6f18601348;hp=10e243c058b93aa0aecdb2331056159ed3d33e81;hpb=8e15cfb601a904523a39079aa7c55e729ccbffda;p=ghc-hetmet.git diff --git a/compiler/simplCore/SimplEnv.lhs b/compiler/simplCore/SimplEnv.lhs index 10e243c..699ba7b 100644 --- a/compiler/simplCore/SimplEnv.lhs +++ b/compiler/simplCore/SimplEnv.lhs @@ -46,7 +46,7 @@ module SimplEnv ( #include "HsVersions.h" -import SimplMonad +import SimplMonad import IdInfo import CoreSyn import Rules @@ -64,7 +64,9 @@ import Coercion import BasicTypes import DynFlags import Util +import MonadUtils import Outputable +import FastString import Data.List \end{code} @@ -500,8 +502,8 @@ These functions are in the monad only so that they can be made strict via seq. \begin{code} simplBinders, simplLamBndrs :: SimplEnv -> [InBndr] -> SimplM (SimplEnv, [OutBndr]) -simplBinders env bndrs = mapAccumLSmpl simplBinder env bndrs -simplLamBndrs env bndrs = mapAccumLSmpl simplLamBndr env bndrs +simplBinders env bndrs = mapAccumLM simplBinder env bndrs +simplLamBndrs env bndrs = mapAccumLM simplLamBndr env bndrs ------------- simplBinder :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr) @@ -526,7 +528,7 @@ simplLamBndr :: SimplEnv -> Var -> SimplM (SimplEnv, Var) -- The "{=(a,b)}" is an unfolding we can't reconstruct otherwise. simplLamBndr env bndr | isId bndr && hasSomeUnfolding old_unf = seqId id2 `seq` return (env2, id2) -- Special case - | otherwise = seqId id1 `seq` return (env1, id1) -- Normal case + | otherwise = simplBinder env bndr -- Normal case where old_unf = idUnfolding bndr (env1, id1) = substIdBndr env bndr