{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface IdInfo where import Bag(Bag) import BasicLit(BasicLit) import BinderInfo(BinderInfo, DuplicationDanger, FunOrArg, InsideSCC) import CharSeq(CSeq) import CmdLineOpts(GlobalSwitch) import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr) import CostCentre(CostCentre) import Id(Id) import IdEnv(IdEnv(..)) import InstEnv(InstTemplate) import MagicUFs(MagicUnfoldingFun) import Maybes(Labda) import Outputable(Outputable) import PlainCore(PlainCoreAtom(..), PlainCoreExpr(..)) import PreludePS(_PackedString) import Pretty(Delay, PprStyle, Pretty(..), PrettyRep) import PrimOps(PrimOp) import SimplEnv(FormSummary, IdVal, InExpr(..), OutAtom(..), OutExpr(..), OutId(..), UnfoldingDetails(..), UnfoldingGuidance(..)) import SrcLoc(SrcLoc) import Subst(Subst) import TaggedCore(SimplifiableBinder(..), SimplifiableCoreExpr(..)) import TyVar(TyVar) import UniType(UniType) import UniqFM(UniqFM) import Unique(UniqSM(..), Unique, UniqueSupply) class OptIdInfo a where noInfo :: a getInfo :: IdInfo -> a addInfo :: IdInfo -> a -> IdInfo ppInfo :: PprStyle -> (Id -> Id) -> a -> Int -> Bool -> PrettyRep data ArgUsage = ArgUsage Int | UnknownArgUsage data ArgUsageInfo type ArgUsageType = [ArgUsage] data ArityInfo data Bag a data BasicLit data BinderInfo data CoreAtom a data CoreExpr a b data DeforestInfo = Don'tDeforest | DoDeforest data Demand = WwLazy Bool | WwStrict | WwUnpack [Demand] | WwPrim | WwEnum data DemandInfo data FBConsum = FBGoodConsum | FBBadConsum data FBProd = FBGoodProd | FBBadProd data FBType = FBType [FBConsum] FBProd data FBTypeInfo data Id type IdEnv a = UniqFM a data IdInfo data InstTemplate data MagicUnfoldingFun data Labda a type PlainCoreAtom = CoreAtom Id type PlainCoreExpr = CoreExpr Id Id data PprStyle type Pretty = Int -> Bool -> PrettyRep data PrettyRep data FormSummary data IdVal type InExpr = CoreExpr (Id, BinderInfo) Id type OutAtom = CoreAtom Id type OutExpr = CoreExpr Id Id type OutId = Id 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 data UnfoldingGuidance = UnfoldNever | UnfoldAlways | EssentialUnfolding | UnfoldIfGoodArgs Int Int [Bool] Int data SrcLoc data Subst type SimplifiableBinder = (Id, BinderInfo) type SimplifiableCoreExpr = CoreExpr (Id, BinderInfo) Id data SpecEnv data SpecInfo = SpecInfo [Labda UniType] Int Id data StrictnessInfo = NoStrictnessInfo | BottomGuaranteed | StrictnessInfo [Demand] (Labda Id) data UniType data UniqFM a type UniqSM a = UniqueSupply -> (UniqueSupply, a) data Unique data UniqueSupply data UpdateInfo type UpdateSpec = [Int] addInfo_UF :: IdInfo -> UnfoldingDetails -> IdInfo addOneToSpecEnv :: SpecEnv -> SpecInfo -> SpecEnv applySubstToIdInfo :: Subst -> IdInfo -> (Subst, IdInfo) apply_to_IdInfo :: (UniType -> UniType) -> IdInfo -> IdInfo arityMaybe :: ArityInfo -> Labda Int boringIdInfo :: IdInfo -> Bool bottomIsGuaranteed :: StrictnessInfo -> Bool getArgUsage :: ArgUsageInfo -> [ArgUsage] getFBType :: FBTypeInfo -> Labda FBType getInfo_UF :: IdInfo -> UnfoldingDetails getSrcLocIdInfo :: IdInfo -> SrcLoc getWorkerId :: StrictnessInfo -> Id getWrapperArgTypeCategories :: UniType -> StrictnessInfo -> Labda [Char] iWantToBeINLINEd :: UnfoldingGuidance -> UnfoldingDetails indicatesWorker :: [Demand] -> Bool lookupConstMethodId :: SpecEnv -> UniType -> Labda Id lookupSpecEnv :: SpecEnv -> [UniType] -> Labda (Id, [UniType], Int) lookupSpecId :: Id -> [Labda UniType] -> Id mkArgUsageInfo :: [ArgUsage] -> ArgUsageInfo mkArityInfo :: Int -> ArityInfo mkBottomStrictnessInfo :: StrictnessInfo mkDemandInfo :: Demand -> DemandInfo mkFBTypeInfo :: FBType -> FBTypeInfo mkMagicUnfolding :: _PackedString -> UnfoldingDetails mkSpecEnv :: [SpecInfo] -> SpecEnv mkStrictnessInfo :: [Demand] -> Labda Id -> StrictnessInfo mkUnfolding :: UnfoldingGuidance -> CoreExpr Id Id -> UnfoldingDetails mkUpdateInfo :: [Int] -> UpdateInfo noIdInfo :: IdInfo noInfo_UF :: UnfoldingDetails nonAbsentArgs :: [Demand] -> Int nullSpecEnv :: SpecEnv ppIdInfo :: PprStyle -> Id -> Bool -> (Id -> Id) -> UniqFM UnfoldingDetails -> IdInfo -> Int -> Bool -> PrettyRep unknownArity :: ArityInfo updateInfoMaybe :: UpdateInfo -> Labda [Int] willBeDemanded :: DemandInfo -> Bool workerExists :: StrictnessInfo -> Bool wwEnum :: Demand wwLazy :: Demand wwPrim :: Demand wwStrict :: Demand wwUnpack :: [Demand] -> Demand instance Eq Demand instance Eq FBConsum instance Eq FBProd instance Eq FBType instance Eq UpdateInfo instance OptIdInfo ArgUsageInfo instance OptIdInfo ArityInfo instance OptIdInfo DeforestInfo instance OptIdInfo DemandInfo instance OptIdInfo FBTypeInfo instance OptIdInfo SpecEnv instance OptIdInfo StrictnessInfo instance OptIdInfo UpdateInfo instance Ord Demand instance Ord UpdateInfo instance Outputable Demand instance Text Demand instance Text UpdateInfo