X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FIdLoop.lhi;h=48ea6b101df4d7ecaf94f43d33e476a2af69d901;hb=fda89b29c748c6cd2fe1fdb477d5c0e8f7d32b90;hp=86680a8caa7fcf88d268e8df83d4557a0892b6e6;hpb=7a3bd641457666e10d0a47be9f22762e03defbf0;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/IdLoop.lhi b/ghc/compiler/basicTypes/IdLoop.lhi index 86680a8..48ea6b1 100644 --- a/ghc/compiler/basicTypes/IdLoop.lhi +++ b/ghc/compiler/basicTypes/IdLoop.lhi @@ -3,30 +3,37 @@ Breaks the IdInfo/ loops. \begin{code} interface IdLoop where -import PreludePS ( _PackedString ) +--import PreludePS ( _PackedString ) +import FastString ( FastString ) import PreludeStdIO ( Maybe ) import BinderInfo ( BinderInfo ) import CoreSyn ( CoreExpr(..), GenCoreExpr, GenCoreArg ) -import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), +import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), mkUnfolding, SimpleUnfolding(..), FormSummary(..), noUnfolding ) import CoreUtils ( unTagBinders ) import Id ( externallyVisibleId, isDataCon, isWorkerId, isWrapperId, - unfoldingUnfriendlyId, getIdInfo, nmbrId, + unfoldingUnfriendlyId, getIdInfo, nmbrId, pprId, idName, nullIdEnv, lookupIdEnv, IdEnv(..), Id(..), GenId ) -import CostCentre ( CostCentre ) -import IdInfo ( IdInfo ) +import Name ( Name ) +import CostCentre ( CostCentre, + noCostCentre, subsumedCosts, cafifyCC, + useCurrentCostCentre, dontCareCostCentre, + overheadCostCentre, preludeCafsCostCentre, + preludeDictsCostCentre, mkAllCafsCC, + mkAllDictsCC, mkUserCC + ) +import IdInfo ( IdInfo, DemandInfo ) import SpecEnv ( SpecEnv, nullSpecEnv, isNullSpecEnv ) import Literal ( Literal ) import MagicUFs ( mkMagicUnfoldingFun, MagicUnfoldingFun ) import OccurAnal ( occurAnalyseGlobalExpr ) -import Outputable ( Outputable(..) ) -import PprEnv ( NmbrEnv ) -import PprStyle ( PprStyle ) +import Outputable ( Outputable(..), PprStyle ) import PprType ( pprParendGenType ) -import Pretty ( PrettyRep ) +import PragmaInfo ( PragmaInfo ) +import Pretty ( Doc ) import Type ( GenType ) import TyVar ( GenTyVar ) import UniqFM ( UniqFM ) @@ -47,15 +54,10 @@ isNullSpecEnv :: SpecEnv -> Bool externallyVisibleId :: Id -> Bool isDataCon :: GenId ty -> Bool isWorkerId :: GenId ty -> Bool -isWrapperId :: Id -> Bool -unfoldingUnfriendlyId :: Id -> Bool -getIdInfo :: Id -> IdInfo -nullIdEnv :: UniqFM a -lookupIdEnv :: UniqFM b -> GenId a -> Maybe b -mAX_WORKER_ARGS :: Int -nmbrId :: Id -> NmbrEnv -> (NmbrEnv, Id) -pprParendGenType :: (Eq a, Outputable a, Eq b, Outputable b) => PprStyle -> GenType a b -> Int -> Bool -> PrettyRep +pprId :: Outputable ty => PprStyle -> GenId ty -> Doc mkMagicUnfoldingFun :: Unique -> MagicUnfoldingFun +idName :: Id -> Name + type IdEnv a = UniqFM a type CoreExpr = GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) @@ -71,8 +73,8 @@ instance Outputable (GenTyVar a) instance (Outputable a) => Outputable (GenId a) instance (Eq a, Outputable a, Eq b, Outputable b) => Outputable (GenType a b) +data DemandInfo data SpecEnv -data NmbrEnv data MagicUnfoldingFun data FormSummary = VarForm | ValueForm | BottomForm | OtherForm @@ -83,6 +85,7 @@ data FormSummary = VarForm | ValueForm | BottomForm | OtherForm data Unfolding noUnfolding :: Unfolding +mkUnfolding :: PragmaInfo -> CoreExpr -> Unfolding -- data SimpleUnfolding = SimpleUnfolding FormSummary UnfoldingGuidance (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique) @@ -93,8 +96,16 @@ data UnfoldingGuidance | UnfoldIfGoodArgs Int Int [Bool] Int data CostCentre -\end{code} - - - +noCostCentre :: CostCentre +subsumedCosts :: CostCentre +useCurrentCostCentre :: CostCentre +dontCareCostCentre :: CostCentre +overheadCostCentre :: CostCentre +preludeCafsCostCentre :: CostCentre +preludeDictsCostCentre :: Bool -> CostCentre +mkAllCafsCC :: FastString -> FastString -> CostCentre +mkAllDictsCC :: FastString -> FastString -> Bool -> CostCentre +mkUserCC :: FastString -> FastString -> FastString -> CostCentre +cafifyCC :: CostCentre -> CostCentre +\end{code}