[project @ 1998-01-08 14:40:22 by areid]
[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 Tell SimplEnv about SimplUtils.simplIdWantsToBeINLINEd.
9
10 \begin{code}
11 interface SmplLoop where
12
13 import MagicUFs     ( MagicUnfoldingFun )
14 import SimplEnv     ( SimplEnv, InBinding(..), InExpr(..),
15                       OutArg(..), OutExpr(..), OutType(..)
16                     )
17 import Simplify     ( simplExpr, simplBind )
18 import SimplUtils   ( simplIdWantsToBeINLINEd )
19
20 import BinderInfo(BinderInfo)
21 import CoreSyn(GenCoreArg, GenCoreBinding, GenCoreExpr)
22 import Id(GenId)
23 import SimplMonad(SimplCount)
24 import TyVar(GenTyVar)
25 import Type(GenType)
26 import UniqSupply(UniqSupply)
27 import Unique(Unique)
28 import Usage(GenUsage)
29
30 data MagicUnfoldingFun
31 data SimplCount 
32 data SimplEnv
33
34 simplIdWantsToBeINLINEd :: GenId (GenType (GenTyVar (GenUsage Unique)) Unique) -> SimplEnv -> Bool
35
36 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)
37 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] -> 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)
38 \end{code}