[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / simplCore / SimplCore.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface SimplCore where
3 import Bag(Bag)
4 import BasicLit(BasicLit)
5 import BinderInfo(BinderInfo)
6 import CmdLineOpts(CoreToDo, GlobalSwitch, SwitchResult)
7 import CoreSyn(CoreAtom, CoreBinding, CoreExpr)
8 import FiniteMap(FiniteMap)
9 import Id(Id)
10 import IdEnv(IdEnv(..))
11 import MagicUFs(MagicUnfoldingFun)
12 import Maybes(Labda)
13 import PreludePS(_PackedString)
14 import Pretty(PprStyle)
15 import SimplEnv(FormSummary, UnfoldingDetails, UnfoldingGuidance)
16 import Specialise(SpecialiseData(..))
17 import SplitUniq(SplitUniqSupply)
18 import TyCon(TyCon)
19 import UniType(UniType)
20 import UniqFM(UniqFM)
21 import Unique(Unique)
22 data Bag a      {-# GHC_PRAGMA EmptyBag | UnitBag a | TwoBags (Bag a) (Bag a) | ListOfBags [Bag a] #-}
23 type IdEnv a = UniqFM a
24 data UnfoldingDetails   {-# GHC_PRAGMA NoUnfoldingDetails | LiteralForm BasicLit | OtherLiteralForm [BasicLit] | ConstructorForm Id [UniType] [CoreAtom Id] | OtherConstructorForm [Id] | GeneralForm Bool FormSummary (CoreExpr (Id, BinderInfo) Id) UnfoldingGuidance | MagicForm _PackedString MagicUnfoldingFun | IWantToBeINLINEd UnfoldingGuidance #-}
25 data SpecialiseData   = SpecData Bool Bool [TyCon] [TyCon] (FiniteMap TyCon [[Labda UniType]]) (Bag (Id, [Labda UniType])) (Bag (Id, [Labda UniType])) (Bag (TyCon, [Labda UniType]))
26 data UniqFM a   {-# GHC_PRAGMA EmptyUFM | LeafUFM Int# a | NodeUFM Int# Int# (UniqFM a) (UniqFM a) #-}
27 data Unique     {-# GHC_PRAGMA MkUnique Int# #-}
28 core2core :: [CoreToDo] -> (GlobalSwitch -> SwitchResult) -> _PackedString -> PprStyle -> SplitUniqSupply -> [TyCon] -> FiniteMap TyCon [[Labda UniType]] -> [CoreBinding Id Id] -> _State _RealWorld -> (([CoreBinding Id Id], UniqFM UnfoldingDetails, SpecialiseData), _State _RealWorld)
29         {-# GHC_PRAGMA _A_ 9 _U_ 222222222 _N_ _S_ "SLLLLLLLL" _N_ _N_ #-}
30