X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=compiler%2FcoreSyn%2FCoreSyn.lhs;h=e580bed20c0a78d024a90915db2b5b09a2d429b6;hb=b88025eabcd83f65d1d81f09272f5172f06a60e7;hp=3f74dc5be5adb42415f18ef864316a9342acea06;hpb=d5934bbb856aa0aa620c9b2e0fa51c90a1a5a048;p=ghc-hetmet.git diff --git a/compiler/coreSyn/CoreSyn.lhs b/compiler/coreSyn/CoreSyn.lhs index 3f74dc5..e580bed 100644 --- a/compiler/coreSyn/CoreSyn.lhs +++ b/compiler/coreSyn/CoreSyn.lhs @@ -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` ()