\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 ( FormSummary(..), UnfoldingDetails(..), UnfoldingGuidance(..) )
+import CoreUnfold ( Unfolding(..), UnfoldingGuidance(..), mkUnfolding,
+ SimpleUnfolding(..), FormSummary(..), noUnfolding )
import CoreUtils ( unTagBinders )
import Id ( externallyVisibleId, isDataCon, isWorkerId, isWrapperId,
- unfoldingUnfriendlyId, getIdInfo,
+ unfoldingUnfriendlyId, getIdInfo, nmbrId, pprId, idName,
nullIdEnv, lookupIdEnv, IdEnv(..),
Id(..), GenId
)
-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 ( MagicUnfoldingFun )
-import Outputable ( Outputable(..) )
-import PprStyle ( PprStyle )
-import PprType ( pprParendType )
-import Pretty ( PrettyRep )
+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 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
-isWrapperId :: Id -> Bool
-unfoldingUnfriendlyId :: Id -> Bool
-getIdInfo :: Id -> IdInfo
-nullIdEnv :: UniqFM a
-lookupIdEnv :: UniqFM b -> GenId a -> Maybe b
-mAX_WORKER_ARGS :: Int
-pprParendType :: (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
+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))
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 = WhnfForm | BottomForm | OtherForm
-data UnfoldingDetails
- = NoUnfoldingDetails
- | LitForm Literal
- | OtherLitForm [Literal]
- | ConForm (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) [GenCoreArg (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique]
- | OtherConForm [GenId (GenType (GenTyVar (GenUsage Unique)) Unique)]
- | GenForm Bool FormSummary (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique) UnfoldingGuidance
- | MagicForm _PackedString 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
- | EssentialUnfolding
| UnfoldIfGoodArgs Int Int [Bool] Int
- | BadUnfolding
+
+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}