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)
8 import PlainCore(PlainCoreBinding(..), PlainCoreExpr(..))
10 import SplitUniq(SplitUniqSupply)
12 import UniType(UniType)
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_ #-}