[project @ 1996-01-08 20:28:12 by partain]
[ghc.git] / ghc / compiler / simplCore / NewOccurAnal.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface NewOccurAnal where
3 import BasicLit(BasicLit)
4 import BinderInfo(BinderInfo, DuplicationDanger, FunOrArg, InsideSCC)
5 import CmdLineOpts(GlobalSwitch, SimplifierSwitch)
6 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
7 import CostCentre(CostCentre)
8 import Id(Id, IdDetails)
9 import IdInfo(IdInfo)
10 import PlainCore(PlainCoreExpr(..), PlainCoreProgram(..))
11 import PrimOps(PrimOp)
12 import TaggedCore(SimplifiableCoreBinding(..), SimplifiableCoreExpr(..))
13 import TyVar(TyVar)
14 import UniType(UniType)
15 import UniqFM(UniqFM)
16 import Unique(Unique)
17 data BinderInfo         {-# GHC_PRAGMA DeadCode | ManyOcc Int | OneOcc FunOrArg DuplicationDanger InsideSCC Int Int #-}
18 data GlobalSwitch
19         {-# GHC_PRAGMA ProduceC [Char] | ProduceS [Char] | ProduceHi [Char] | AsmTarget [Char] | ForConcurrent | Haskell_1_3 | GlasgowExts | CompilingPrelude | HideBuiltinNames | HideMostBuiltinNames | EnsureSplittableC [Char] | Verbose | PprStyle_User | PprStyle_Debug | PprStyle_All | DoCoreLinting | EmitArityChecks | OmitInterfacePragmas | OmitDerivedRead | OmitReexportedInstances | UnfoldingUseThreshold Int | UnfoldingCreationThreshold Int | UnfoldingOverrideThreshold Int | ReportWhyUnfoldingsDisallowed | UseGetMentionedVars | ShowPragmaNameErrs | NameShadowingNotOK | SigsRequired | SccProfilingOn | AutoSccsOnExportedToplevs | AutoSccsOnAllToplevs | AutoSccsOnIndividualCafs | SccGroup [Char] | DoTickyProfiling | DoSemiTagging | FoldrBuildOn | FoldrBuildTrace | SpecialiseImports | ShowImportSpecs | OmitUnspecialisedCode | SpecialiseOverloaded | SpecialiseUnboxed | SpecialiseAll | SpecialiseTrace | OmitBlackHoling | StgDoLetNoEscapes | IgnoreStrictnessPragmas | IrrefutableTuples | IrrefutableEverything | AllStrict | AllDemanded | D_dump_rif2hs | D_dump_rn4 | D_dump_tc | D_dump_deriv | D_dump_ds | D_dump_occur_anal | D_dump_simpl | D_dump_spec | D_dump_stranal | D_dump_deforest | D_dump_stg | D_dump_absC | D_dump_flatC | D_dump_realC | D_dump_asm | D_dump_core_passes | D_dump_core_passes_info | D_verbose_core2core | D_verbose_stg2stg | D_simplifier_stats #-}
20 data CoreBinding a b    {-# GHC_PRAGMA CoNonRec a (CoreExpr a b) | CoRec [(a, CoreExpr a b)] #-}
21 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) #-}
22 data Id         {-# GHC_PRAGMA Id Unique UniType IdInfo IdDetails #-}
23 type PlainCoreExpr = CoreExpr Id Id
24 type PlainCoreProgram = [CoreBinding Id Id]
25 type SimplifiableCoreBinding = CoreBinding (Id, BinderInfo) Id
26 type SimplifiableCoreExpr = CoreExpr (Id, BinderInfo) Id
27 newOccurAnalyseBinds :: [CoreBinding Id Id] -> (GlobalSwitch -> Bool) -> (SimplifierSwitch -> Bool) -> [CoreBinding (Id, BinderInfo) Id]
28         {-# GHC_PRAGMA _A_ 3 _U_ 112 _N_ _S_ "LSL" _N_ _N_ #-}
29 newOccurAnalyseExpr :: UniqFM Id -> CoreExpr Id Id -> (UniqFM BinderInfo, CoreExpr (Id, BinderInfo) Id)
30         {-# GHC_PRAGMA _A_ 2 _U_ 21 _N_ _S_ "LS" _N_ _N_ #-}
31