[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / coreSyn / CoreLift.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CoreLift where
3 import BasicLit(BasicLit)
4 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
5 import CostCentre(CostCentre)
6 import Id(Id, IdDetails)
7 import IdInfo(IdInfo)
8 import PlainCore(PlainCoreBinding(..), PlainCoreExpr(..))
9 import PrimOps(PrimOp)
10 import SplitUniq(SplitUniqSupply)
11 import TyVar(TyVar)
12 import UniType(UniType)
13 import Unique(Unique)
14 data CoreBinding a b    {-# GHC_PRAGMA CoNonRec a (CoreExpr a b) | CoRec [(a, CoreExpr a b)] #-}
15 data CoreExpr a b       {-# GHC_PRAGMA CoVar b | CoLit BasicLit | CoCon Id [UniType] [CoreAtom b] | CoPrim PrimOp [UniType] [CoreAtom b] | CoLam [a] (CoreExpr a b) | CoTyLam TyVar (CoreExpr a b) | CoApp (CoreExpr a b) (CoreAtom b) | CoTyApp (CoreExpr a b) UniType | CoCase (CoreExpr a b) (CoreCaseAlternatives a b) | CoLet (CoreBinding a b) (CoreExpr a b) | CoSCC CostCentre (CoreExpr a b) #-}
16 data Id         {-# GHC_PRAGMA Id Unique UniType IdInfo IdDetails #-}
17 type PlainCoreBinding = CoreBinding Id Id
18 type PlainCoreExpr = CoreExpr Id Id
19 data SplitUniqSupply    {-# GHC_PRAGMA MkSplitUniqSupply Int SplitUniqSupply SplitUniqSupply #-}
20 data Unique     {-# GHC_PRAGMA MkUnique Int# #-}
21 applyBindUnlifts :: [CoreExpr Id Id -> CoreExpr Id Id] -> CoreExpr Id Id -> CoreExpr Id Id
22         {-# GHC_PRAGMA _A_ 2 _U_ 12 _N_ _S_ "SL" _N_ _N_ #-}
23 bindUnlift :: Id -> Id -> CoreExpr Id Id -> CoreExpr Id Id
24         {-# GHC_PRAGMA _A_ 3 _U_ 222 _N_ _N_ _N_ _N_ #-}
25 liftCoreBindings :: SplitUniqSupply -> [CoreBinding Id Id] -> [CoreBinding Id Id]
26         {-# GHC_PRAGMA _A_ 2 _U_ 11 _N_ _S_ "LS" _N_ _N_ #-}
27 liftExpr :: Id -> CoreExpr Id Id -> CoreExpr Id Id
28         {-# GHC_PRAGMA _A_ 2 _U_ 22 _N_ _N_ _N_ _N_ #-}
29 mkLiftedId :: Id -> Unique -> (Id, Id)
30         {-# GHC_PRAGMA _A_ 2 _U_ 22 _N_ _N_ _N_ _N_ #-}
31