[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / stranal / SaLib.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface SaLib where
3 import BasicLit(BasicLit)
4 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
5 import CostCentre(CostCentre)
6 import Id(Id, IdDetails)
7 import IdEnv(IdEnv(..))
8 import IdInfo(Demand, IdInfo, StrictnessInfo)
9 import Maybes(Labda)
10 import Outputable(Outputable)
11 import PlainCore(PlainCoreExpr(..))
12 import PrimOps(PrimOp)
13 import TyVar(TyVar)
14 import UniType(UniType)
15 import UniqFM(UniqFM)
16 import Unique(Unique)
17 data AbsVal   = AbsTop | AbsBot | AbsProd [AbsVal] | AbsFun [Id] (CoreExpr Id Id) AbsValEnv | AbsApproxFun [Demand]
18 data AbsValEnv  {-# GHC_PRAGMA AbsValEnv Bool (UniqFM AbsVal) #-}
19 type AbsenceEnv = AbsValEnv
20 data AnalysisKind   = StrAnal | AbsAnal
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 IdEnv a = UniqFM a
24 data Demand     {-# GHC_PRAGMA WwLazy Bool | WwStrict | WwUnpack [Demand] | WwPrim | WwEnum #-}
25 type PlainCoreExpr = CoreExpr Id Id
26 type StrictEnv = AbsValEnv
27 data UniqFM a   {-# GHC_PRAGMA EmptyUFM | LeafUFM Int# a | NodeUFM Int# Int# (UniqFM a) (UniqFM a) #-}
28 data Unique     {-# GHC_PRAGMA MkUnique Int# #-}
29 absValFromStrictness :: AnalysisKind -> StrictnessInfo -> AbsVal
30         {-# GHC_PRAGMA _A_ 2 _U_ 12 _N_ _S_ "LS" _N_ _N_ #-}
31 addOneToAbsValEnv :: AbsValEnv -> Id -> AbsVal -> AbsValEnv
32         {-# GHC_PRAGMA _A_ 3 _U_ 112 _N_ _S_ "U(LL)LL" {_A_ 4 _U_ 2212 _N_ _N_ _N_ _N_} _N_ _N_ #-}
33 growAbsValEnvList :: AbsValEnv -> [(Id, AbsVal)] -> AbsValEnv
34         {-# GHC_PRAGMA _A_ 2 _U_ 12 _N_ _S_ "U(LL)L" {_A_ 3 _U_ 222 _N_ _N_ _N_ _N_} _N_ _N_ #-}
35 lookupAbsValEnv :: AbsValEnv -> Id -> Labda AbsVal
36         {-# GHC_PRAGMA _A_ 2 _U_ 11 _N_ _S_ "U(EL)L" {_A_ 3 _U_ 121 _N_ _N_ _N_ _N_} _N_ _N_ #-}
37 nullAbsValEnv :: Bool -> AbsValEnv
38         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _N_ _N_ _N_ #-}
39 instance Outputable AbsVal
40         {-# GHC_PRAGMA _M_ SaLib {-dfun-} _A_ 2 _N_ _N_ _N_ _N_ _N_
41          ppr = _A_ 2 _U_ 2122 _N_ _S_ "LS" _N_ _N_ #-}
42 instance Text AnalysisKind
43         {-# GHC_PRAGMA _M_ SaLib {-dfun-} _A_ 0 _N_ _N_ _N_ _F_ _IF_ARGS_ 0 0 X 5 _!_ _TUP_4 [(Int -> [Char] -> [(AnalysisKind, [Char])]), (Int -> AnalysisKind -> [Char] -> [Char]), ([Char] -> [([AnalysisKind], [Char])]), ([AnalysisKind] -> [Char] -> [Char])] [_CONSTM_ Text readsPrec (AnalysisKind), _CONSTM_ Text showsPrec (AnalysisKind), _CONSTM_ Text readList (AnalysisKind), _CONSTM_ Text showList (AnalysisKind)] _N_
44          readsPrec = _A_ 2 _U_ 22 _N_ _S_ _!_ _F_ _IF_ARGS_ 0 2 XX 4 \ (u0 :: Int) (u1 :: [Char]) -> _APP_  _TYAPP_  patError# { (Int -> [Char] -> [(AnalysisKind, [Char])]) } [ _NOREP_S_ "%DPreludeCore.Text.readsPrec\"", u0, u1 ] _N_,
45          showsPrec = _A_ 2 _U_ 112 _N_ _S_ "LE" _N_ _N_,
46          readList = _A_ 0 _U_ 2 _N_ _N_ _N_ _N_,
47          showList = _A_ 0 _U_ 12 _N_ _N_ _N_ _N_ #-}
48