[project @ 1996-02-06 14:32:22 by dnt]
[ghc-hetmet.git] / ghc / compiler / basicTypes / IdInfo.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface IdInfo where
3 import Bag(Bag)
4 import BasicLit(BasicLit)
5 import BinderInfo(BinderInfo, DuplicationDanger, FunOrArg, InsideSCC)
6 import CharSeq(CSeq)
7 import CmdLineOpts(GlobalSwitch)
8 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
9 import CostCentre(CostCentre)
10 import Id(Id)
11 import IdEnv(IdEnv(..))
12 import InstEnv(InstTemplate)
13 import MagicUFs(MagicUnfoldingFun)
14 import Maybes(Labda)
15 import Outputable(Outputable)
16 import PlainCore(PlainCoreAtom(..), PlainCoreExpr(..))
17 import PreludePS(_PackedString)
18 import Pretty(Delay, PprStyle, Pretty(..), PrettyRep)
19 import PrimOps(PrimOp)
20 import SimplEnv(FormSummary, IdVal, InExpr(..), OutAtom(..), OutExpr(..), OutId(..), UnfoldingDetails(..), UnfoldingGuidance(..))
21 import SrcLoc(SrcLoc)
22 import Subst(Subst)
23 import TaggedCore(SimplifiableBinder(..), SimplifiableCoreExpr(..))
24 import TyVar(TyVar)
25 import UniType(UniType)
26 import UniqFM(UniqFM)
27 import Unique(UniqSM(..), Unique, UniqueSupply)
28 class OptIdInfo a where
29         noInfo :: a
30         getInfo :: IdInfo -> a
31         addInfo :: IdInfo -> a -> IdInfo
32         ppInfo :: PprStyle -> (Id -> Id) -> a -> Int -> Bool -> PrettyRep
33 data ArgUsage   = ArgUsage Int | UnknownArgUsage
34 data ArgUsageInfo 
35 type ArgUsageType = [ArgUsage]
36 data ArityInfo 
37 data Bag a 
38 data BasicLit 
39 data BinderInfo 
40 data CoreAtom a 
41 data CoreExpr a b 
42 data DeforestInfo   = Don'tDeforest | DoDeforest
43 data Demand   = WwLazy Bool | WwStrict | WwUnpack [Demand] | WwPrim | WwEnum
44 data DemandInfo 
45 data FBConsum   = FBGoodConsum | FBBadConsum
46 data FBProd   = FBGoodProd | FBBadProd
47 data FBType   = FBType [FBConsum] FBProd
48 data FBTypeInfo 
49 data Id 
50 type IdEnv a = UniqFM a
51 data IdInfo 
52 data InstTemplate 
53 data MagicUnfoldingFun 
54 data Labda a 
55 type PlainCoreAtom = CoreAtom Id
56 type PlainCoreExpr = CoreExpr Id Id
57 data PprStyle 
58 type Pretty = Int -> Bool -> PrettyRep
59 data PrettyRep 
60 data FormSummary 
61 data IdVal 
62 type InExpr = CoreExpr (Id, BinderInfo) Id
63 type OutAtom = CoreAtom Id
64 type OutExpr = CoreExpr Id Id
65 type OutId = Id
66 data UnfoldingDetails   = 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
67 data UnfoldingGuidance   = UnfoldNever | UnfoldAlways | EssentialUnfolding | UnfoldIfGoodArgs Int Int [Bool] Int | BadUnfolding
68 data SrcLoc 
69 data Subst 
70 type SimplifiableBinder = (Id, BinderInfo)
71 type SimplifiableCoreExpr = CoreExpr (Id, BinderInfo) Id
72 data SpecEnv 
73 data SpecInfo   = SpecInfo [Labda UniType] Int Id
74 data StrictnessInfo   = NoStrictnessInfo | BottomGuaranteed | StrictnessInfo [Demand] (Labda Id)
75 data UniType 
76 data UniqFM a 
77 type UniqSM a = UniqueSupply -> (UniqueSupply, a)
78 data Unique 
79 data UniqueSupply 
80 data UpdateInfo 
81 type UpdateSpec = [Int]
82 addInfo_UF :: IdInfo -> UnfoldingDetails -> IdInfo
83 addOneToSpecEnv :: SpecEnv -> SpecInfo -> SpecEnv
84 applySubstToIdInfo :: Subst -> IdInfo -> (Subst, IdInfo)
85 apply_to_IdInfo :: (UniType -> UniType) -> IdInfo -> IdInfo
86 arityMaybe :: ArityInfo -> Labda Int
87 boringIdInfo :: IdInfo -> Bool
88 bottomIsGuaranteed :: StrictnessInfo -> Bool
89 getArgUsage :: ArgUsageInfo -> [ArgUsage]
90 getFBType :: FBTypeInfo -> Labda FBType
91 getInfo_UF :: IdInfo -> UnfoldingDetails
92 getSrcLocIdInfo :: IdInfo -> SrcLoc
93 getWorkerId :: StrictnessInfo -> Id
94 getWrapperArgTypeCategories :: UniType -> StrictnessInfo -> Labda [Char]
95 iWantToBeINLINEd :: UnfoldingGuidance -> UnfoldingDetails
96 indicatesWorker :: [Demand] -> Bool
97 lookupConstMethodId :: Id -> UniType -> Labda Id
98 lookupSpecEnv :: SpecEnv -> [UniType] -> Labda (Id, [UniType], Int)
99 lookupSpecId :: Id -> [Labda UniType] -> Id
100 mkArgUsageInfo :: [ArgUsage] -> ArgUsageInfo
101 mkArityInfo :: Int -> ArityInfo
102 mkBottomStrictnessInfo :: StrictnessInfo
103 mkDemandInfo :: Demand -> DemandInfo
104 mkFBTypeInfo :: FBType -> FBTypeInfo
105 mkMagicUnfolding :: _PackedString -> UnfoldingDetails
106 mkSpecEnv :: [SpecInfo] -> SpecEnv
107 mkStrictnessInfo :: [Demand] -> Labda Id -> StrictnessInfo
108 mkUnfolding :: UnfoldingGuidance -> CoreExpr Id Id -> UnfoldingDetails
109 mkUpdateInfo :: [Int] -> UpdateInfo
110 noIdInfo :: IdInfo
111 noInfo_UF :: UnfoldingDetails
112 nonAbsentArgs :: [Demand] -> Int
113 nullSpecEnv :: SpecEnv
114 ppIdInfo :: PprStyle -> Id -> Bool -> (Id -> Id) -> UniqFM UnfoldingDetails -> IdInfo -> Int -> Bool -> PrettyRep
115 unknownArity :: ArityInfo
116 updateInfoMaybe :: UpdateInfo -> Labda [Int]
117 willBeDemanded :: DemandInfo -> Bool
118 workerExists :: StrictnessInfo -> Bool
119 wwEnum :: Demand
120 wwLazy :: Demand
121 wwPrim :: Demand
122 wwStrict :: Demand
123 wwUnpack :: [Demand] -> Demand
124 instance Eq Demand
125 instance Eq FBConsum
126 instance Eq FBProd
127 instance Eq FBType
128 instance Eq UpdateInfo
129 instance OptIdInfo ArgUsageInfo
130 instance OptIdInfo ArityInfo
131 instance OptIdInfo DeforestInfo
132 instance OptIdInfo DemandInfo
133 instance OptIdInfo FBTypeInfo
134 instance OptIdInfo SpecEnv
135 instance OptIdInfo StrictnessInfo
136 instance OptIdInfo UpdateInfo
137 instance Ord Demand
138 instance Ord UpdateInfo
139 instance Outputable Demand
140 instance Text Demand
141 instance Text UpdateInfo
142