Breaks the IdInfo/ loops. \begin{code} interface IdLoop where --import PreludePS ( _PackedString ) import FastString ( FastString ) import PreludeStdIO ( Maybe ) import BinderInfo ( BinderInfo ) import CoreSyn ( CoreExpr(..), GenCoreExpr, GenCoreArg ) import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), mkUnfolding, SimpleUnfolding(..), FormSummary(..), noUnfolding ) import CoreUtils ( unTagBinders ) import Id ( externallyVisibleId, isDataCon, isWorkerId, isWrapperId, unfoldingUnfriendlyId, getIdInfo, nmbrId, pprId, idName, nullIdEnv, lookupIdEnv, IdEnv(..), Id(..), GenId ) 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(..), PprStyle ) import PprType ( pprParendGenType ) import PragmaInfo ( PragmaInfo ) import Pretty ( Doc ) import Type ( GenType ) import TyVar ( GenTyVar ) import UniqFM ( UniqFM ) import Unique ( Unique ) import Usage ( GenUsage ) import Util ( Ord3(..) ) import WwLib ( mAX_WORKER_ARGS ) import StdIdInfo ( addStandardIdInfo ) -- Used in Id, but StdIdInfo needs lots of stuff from Id addStandardIdInfo :: Id -> Id nullSpecEnv :: SpecEnv isNullSpecEnv :: SpecEnv -> Bool -- 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 -- unTagBinders :: GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), a) b c d -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) b c d externallyVisibleId :: Id -> Bool isDataCon :: GenId ty -> Bool isWorkerId :: GenId ty -> Bool 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)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique instance Outputable UnfoldingGuidance instance Eq Unique instance Outputable Unique instance Eq (GenTyVar a) instance Ord3 (GenTyVar a) 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 MagicUnfoldingFun data FormSummary = VarForm | ValueForm | BottomForm | OtherForm -- data Unfolding -- = NoUnfolding -- | CoreUnfolding SimpleUnfolding -- | MagicUnfolding Unique MagicUnfoldingFun 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) data UnfoldingGuidance = UnfoldNever | UnfoldAlways | UnfoldIfGoodArgs Int Int [Bool] Int data CostCentre 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}