ddffa3bbbd5804a2b51630ae3a1f30c5fdb94c0b
[ghc-hetmet.git] / ghc / compiler / simplCore / SmplLoop.lhi
1 Breaks the loop between SimplEnv and MagicUFs, by telling SimplEnv all
2 it needs to know about MagicUFs (not much).
3
4 Also break the loop between SimplVar/SimplCase (which use
5 Simplify.simplExpr) and SimplExpr (which uses whatever
6 SimplVar/SimplCase cough up).
7
8 \begin{code}
9 interface SmplLoop where
10
11 import MagicUFs     ( MagicUnfoldingFun )
12 import SimplEnv     ( SimplEnv, InBinding(..), InExpr(..),
13                       OutArg(..), OutExpr(..), OutType(..)
14                     )
15 import Simplify     ( simplExpr, simplBind )
16
17 import BinderInfo(BinderInfo)
18 import CoreSyn(GenCoreArg, GenCoreBinding, GenCoreExpr)
19 import Id(GenId)
20 import SimplMonad(SimplCount)
21 import TyVar(GenTyVar)
22 import Type(GenType)
23 import UniqSupply(UniqSupply)
24 import Unique(Unique)
25 import Usage(GenUsage)
26
27 data MagicUnfoldingFun
28 data SimplCount 
29
30 simplBind :: SimplEnv -> GenCoreBinding (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique -> (SimplEnv -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount)) -> GenType (GenTyVar (GenUsage Unique)) Unique -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount)
31 simplExpr :: SimplEnv -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique -> [GenCoreArg (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique] -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount)
32 \end{code}