1 Breaks the IdInfo/<everything> loops.
6 --import PreludePS ( _PackedString )
7 import FastString ( FastString )
8 import PreludeStdIO ( Maybe )
10 import BinderInfo ( BinderInfo )
11 import CoreSyn ( CoreExpr(..), GenCoreExpr, GenCoreArg )
12 import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), mkUnfolding,
13 SimpleUnfolding(..), FormSummary(..), noUnfolding )
14 import CoreUtils ( unTagBinders )
15 import Id ( externallyVisibleId, isDataCon, isWorkerId, isWrapperId,
16 unfoldingUnfriendlyId, getIdInfo, nmbrId, pprId,
17 nullIdEnv, lookupIdEnv, IdEnv(..),
20 import CostCentre ( CostCentre,
21 noCostCentre, subsumedCosts, cafifyCC,
22 useCurrentCostCentre, dontCareCostCentre,
23 overheadCostCentre, preludeCafsCostCentre,
24 preludeDictsCostCentre, mkAllCafsCC,
25 mkAllDictsCC, mkUserCC
27 import IdInfo ( IdInfo, DemandInfo )
28 import SpecEnv ( SpecEnv, nullSpecEnv, isNullSpecEnv )
29 import Literal ( Literal )
30 import MagicUFs ( mkMagicUnfoldingFun, MagicUnfoldingFun )
31 import OccurAnal ( occurAnalyseGlobalExpr )
32 import Outputable ( Outputable(..), PprStyle )
33 import PprEnv ( NmbrEnv )
34 import PprType ( pprParendGenType )
35 import PragmaInfo ( PragmaInfo )
37 import Type ( GenType )
38 import TyVar ( GenTyVar )
39 import UniqFM ( UniqFM )
40 import Unique ( Unique )
41 import Usage ( GenUsage )
42 import Util ( Ord3(..) )
43 import WwLib ( mAX_WORKER_ARGS )
44 import StdIdInfo ( addStandardIdInfo ) -- Used in Id, but StdIdInfo needs lots of stuff from Id
46 addStandardIdInfo :: Id -> Id
48 nullSpecEnv :: SpecEnv
49 isNullSpecEnv :: SpecEnv -> Bool
51 -- occurAnalyseGlobalExpr :: GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique
52 -- unTagBinders :: GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), a) b c d -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) b c d
54 externallyVisibleId :: Id -> Bool
55 isDataCon :: GenId ty -> Bool
56 isWorkerId :: GenId ty -> Bool
57 nmbrId :: Id -> NmbrEnv -> (NmbrEnv, Id)
58 pprId :: Outputable ty => PprStyle -> GenId ty -> Doc
59 mkMagicUnfoldingFun :: Unique -> MagicUnfoldingFun
62 type IdEnv a = UniqFM a
63 type CoreExpr = GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique))
64 (GenId (GenType (GenTyVar (GenUsage Unique)) Unique))
65 (GenTyVar (GenUsage Unique)) Unique
67 instance Outputable UnfoldingGuidance
69 instance Outputable Unique
70 instance Eq (GenTyVar a)
71 instance Ord3 (GenTyVar a)
72 instance Outputable (GenTyVar a)
73 instance (Outputable a) => Outputable (GenId a)
74 instance (Eq a, Outputable a, Eq b, Outputable b) => Outputable (GenType a b)
79 data MagicUnfoldingFun
80 data FormSummary = VarForm | ValueForm | BottomForm | OtherForm
84 -- | CoreUnfolding SimpleUnfolding
85 -- | MagicUnfolding Unique MagicUnfoldingFun
88 noUnfolding :: Unfolding
89 mkUnfolding :: PragmaInfo -> CoreExpr -> Unfolding
91 -- data SimpleUnfolding = SimpleUnfolding FormSummary UnfoldingGuidance (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique)
94 data UnfoldingGuidance
97 | UnfoldIfGoodArgs Int Int [Bool] Int
101 noCostCentre :: CostCentre
102 subsumedCosts :: CostCentre
103 useCurrentCostCentre :: CostCentre
104 dontCareCostCentre :: CostCentre
105 overheadCostCentre :: CostCentre
106 preludeCafsCostCentre :: CostCentre
107 preludeDictsCostCentre :: Bool -> CostCentre
108 mkAllCafsCC :: FastString -> FastString -> CostCentre
109 mkAllDictsCC :: FastString -> FastString -> Bool -> CostCentre
110 mkUserCC :: FastString -> FastString -> FastString -> CostCentre
111 cafifyCC :: CostCentre -> CostCentre