[project @ 1996-07-25 20:43:49 by partain]
[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
33 simplIdWantsToBeINLINEd :: GenId (GenType (GenTyVar (GenUsage Unique)) Unique) -> SimplEnv -> Bool
34
35 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)
36 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)
37 \end{code}