Breaks the IdInfo/ loops. \begin{code} interface IdLoop where import PreludePS ( _PackedString ) import PreludeStdIO ( Maybe ) import BinderInfo ( BinderInfo ) import CoreSyn ( CoreExpr(..), GenCoreExpr, GenCoreArg ) import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), SimpleUnfolding(..), FormSummary(..) ) import CoreUtils ( unTagBinders ) import Id ( externallyVisibleId, isDataCon, isWorkerId, isWrapperId, unfoldingUnfriendlyId, getIdInfo, nmbrId, nullIdEnv, lookupIdEnv, IdEnv(..), Id(..), GenId ) import CostCentre ( CostCentre ) import IdInfo ( IdInfo ) 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 PprType ( pprParendGenType ) import Pretty ( PrettyRep ) import Type ( GenType ) import TyVar ( GenTyVar ) import UniqFM ( UniqFM ) import Unique ( Unique ) import Usage ( GenUsage ) import Util ( Ord3(..) ) import WwLib ( mAX_WORKER_ARGS ) 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 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 unTagBinders :: GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), a) b c d -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) b c d mkMagicUnfoldingFun :: Unique -> MagicUnfoldingFun 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 SpecEnv data NmbrEnv data MagicUnfoldingFun data FormSummary = VarForm | ValueForm | BottomForm | OtherForm data Unfolding = NoUnfolding | CoreUnfolding SimpleUnfolding | MagicUnfolding Unique MagicUnfoldingFun 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 \end{code}