TickBox representation change
[ghc-hetmet.git] / compiler / coreSyn / CoreSyn.lhs
index 3f74dc5..e580bed 100644 (file)
@@ -42,7 +42,7 @@ module CoreSyn (
 
        -- Core rules
        CoreRule(..),   -- CoreSubst, CoreTidy, CoreFVs, PprCore only
-       RuleName, seqRules, 
+       RuleName, seqRules, ruleArity,
        isBuiltinRule, ruleName, isLocalRule, ruleIdName
     ) where
 
@@ -60,7 +60,6 @@ import DataCon
 import BasicTypes
 import FastString
 import Outputable
-import Module
 
 infixl 4 `mkApps`, `mkValApps`, `mkTyApps`, `mkVarApps`
 -- Left associative, so that we can say (f `mkTyApps` xs `mkVarApps` ys)
@@ -133,11 +132,6 @@ data Note
 
   | CoreNote String     -- A generic core annotation, propagated but not used by GHC
 
-  | TickBox Module !Int -- ^Tick box for Hpc-style coverage
-  | BinaryTickBox Module !Int !Int
-                       -- ^Binary tick box, with a tick for result = True, result = False
-
-
 -- NOTE: we also treat expressions wrapped in InlineMe as
 -- 'cheap' and 'dupable' (in the sense of exprIsCheap, exprIsDupable)
 -- What this means is that we obediently inline even things that don't
@@ -216,11 +210,16 @@ data CoreRule
        ru_name :: RuleName,    -- and suchlike.  It has no free variables.
        ru_fn :: Name,          -- Name of the Id at 
                                -- the head of this rule
+       ru_nargs :: Int,        -- Number of args that ru_try expects
        ru_try  :: [CoreExpr] -> Maybe CoreExpr }
 
 isBuiltinRule (BuiltinRule {}) = True
 isBuiltinRule _                       = False
 
+ruleArity :: CoreRule -> Int
+ruleArity (BuiltinRule {ru_nargs = n}) = n
+ruleArity (Rule {ru_args = args})      = length args
+
 ruleName :: CoreRule -> RuleName
 ruleName = ru_name
 
@@ -621,9 +620,6 @@ seqExprs [] = ()
 seqExprs (e:es) = seqExpr e `seq` seqExprs es
 
 seqNote (CoreNote s)   = s `seq` ()
-seqNote (TickBox m n)  = m `seq` ()  -- no need for seq on n, because n is strict
-seqNote (BinaryTickBox m t f)   
-                      = m `seq` ()  -- likewise on t and f.
 seqNote other         = ()
 
 seqBndr b = b `seq` ()