> module UpdAnal ( updateAnalyse ) where
>
-> import Ubiq{-uitous-}
+> IMP_Ubiq(){-uitous-}
>
> import StgSyn
+> import Id ( SYN_IE(IdEnv), growIdEnv, addOneToIdEnv, combineIdEnvs, nullIdEnv,
+> unitIdEnv, mkIdEnv, rngIdEnv, lookupIdEnv,
+> SYN_IE(IdSet),
+> getIdUpdateInfo, addIdUpdateInfo, mkSysLocal, idType, isImportedId,
+> externallyVisibleId,
+> SYN_IE(Id), GenId
+> )
+> import IdInfo ( UpdateInfo, SYN_IE(UpdateSpec), mkUpdateInfo, updateInfoMaybe )
+> import Type ( splitFunTy, splitSigmaTy )
+> import UniqSet
+> import Unique ( getBuiltinUniques )
+> import SrcLoc ( noSrcLoc )
> import Util ( panic )
>
-> updateAnalyse :: [StgBinding] -> [StgBinding] {- Exported -}
-> updateAnalyse = panic "UpdAnal.updateAnalyse"
->
-> {- LATER: to end of file:
-> --import Type ( splitFunTy, splitSigmaTy, Class, TyVarTemplate,
-> -- TauType(..)
-> -- )
-> --import Id
-> --import IdInfo
-> --import Outputable ( isExported )
-> --import Pretty
-> --import SrcLoc ( mkUnknownSrcLoc )
-> --import StgSyn
-> --import UniqSet
-> --import Unique ( getBuiltinUniques )
-> --import Util
%-----------------------------------------------------------------------------
\subsection{Reverse application}
> where
> (c,b,_) = foldl doApp f ids
> ids = map mkid (getBuiltinUniques arity)
-> mkid u = mkSysLocal SLIT("upd") u noType mkUnknownSrcLoc
+> mkid u = mkSysLocal SLIT("upd") u noType noSrcLoc
> countUses u = if u `elemRefs` b then 2 else min (lookupc c u) 2
> noType = panic "UpdAnal: no type!"
>
> StgRec bs -> StgRec [ (attachOne v, rhs) | (v, rhs) <- bs ]
>
> where attachOne v
-> | isExported v
+> | externallyVisibleId v
> = let c = lookup v p in
> addIdUpdateInfo v
> (mkUpdateInfo (mkUpdateSpec v c))
> | otherwise = v
-> -}
%-----------------------------------------------------------------------------