X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FIdInfo.lhs;h=b59ddf965406c057d2009a734eb2b229c6af46e8;hb=ff8e1d01524b48e028b09e2b04b2e5303cb6d95f;hp=9db8e350a16b414d201565facb13f92ec4a173bf;hpb=49c98d143c382a1341e1046f5ca00819a25691ba;p=ghc-hetmet.git diff --git a/compiler/basicTypes/IdInfo.lhs b/compiler/basicTypes/IdInfo.lhs index 9db8e35..b59ddf9 100644 --- a/compiler/basicTypes/IdInfo.lhs +++ b/compiler/basicTypes/IdInfo.lhs @@ -16,7 +16,7 @@ module IdInfo ( seqIdInfo, megaSeqIdInfo, -- Zapping - zapLamInfo, zapDemandInfo, + zapLamInfo, zapDemandInfo, zapFragileInfo, -- Arity ArityInfo, @@ -71,7 +71,10 @@ module IdInfo ( CafInfo(..), cafInfo, ppCafInfo, setCafInfo, mayHaveCafRefs, -- Lambda-bound variable info - LBVarInfo(..), lbvarInfo, setLBVarInfo, noLBVarInfo, hasNoLBVarInfo + LBVarInfo(..), lbvarInfo, setLBVarInfo, noLBVarInfo, hasNoLBVarInfo, + + -- Tick-box info + TickBoxOp(..), TickBoxId, ) where #include "HsVersions.h" @@ -87,6 +90,7 @@ import TyCon import ForeignCall import NewDemand import Outputable +import Module import Data.Maybe @@ -215,7 +219,7 @@ seqNewDemandInfo (Just dmd) = seqDemand dmd %************************************************************************ %* * -\subsection{GlobalIdDetails +\subsection{GlobalIdDetails} %* * %************************************************************************ @@ -246,6 +250,8 @@ data GlobalIdDetails | PrimOpId PrimOp -- The Id for a primitive operator | FCallId ForeignCall -- The Id for a foreign call + | TickBoxOpId TickBoxOp -- The Id for a tick box (both traditional and binary) + | NotGlobalId -- Used as a convenient extra return value from globalIdDetails notGlobalId = NotGlobalId @@ -258,6 +264,7 @@ instance Outputable GlobalIdDetails where ppr (ClassOpId _) = ptext SLIT("[ClassOp]") ppr (PrimOpId _) = ptext SLIT("[PrimOp]") ppr (FCallId _) = ptext SLIT("[ForeignCall]") + ppr (TickBoxOpId _) = ptext SLIT("[TickBoxOp]") ppr (RecordSelId {}) = ptext SLIT("[RecSel]") \end{code} @@ -693,3 +700,27 @@ zapDemandInfo info@(IdInfo {newDemandInfo = dmd}) | otherwise = Nothing \end{code} +\begin{code} +zapFragileInfo :: IdInfo -> Maybe IdInfo +-- Zap info that depends on free variables +zapFragileInfo info = Just (info `setSpecInfo` emptySpecInfo + `setWorkerInfo` NoWorker + `setUnfoldingInfo` NoUnfolding) +\end{code} + +%************************************************************************ +%* * +\subsection{TickBoxOp} +%* * +%************************************************************************ + +\begin{code} +type TickBoxId = Int + +data TickBoxOp + = TickBox Module {-# UNPACK #-} !TickBoxId + -- ^Tick box for Hpc-style coverage + +instance Outputable TickBoxOp where + ppr (TickBox mod n) = ptext SLIT("tick") <+> ppr (mod,n) +\end{code}