X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FcoreSyn%2FCoreSyn.lhs;h=3f74dc5be5adb42415f18ef864316a9342acea06;hp=3c98f288fd45a98f70111e97d0e39e61fc834e0d;hb=d5934bbb856aa0aa620c9b2e0fa51c90a1a5a048;hpb=33b8b60e0aa925962cd11a8be98d9818666d58a0 diff --git a/compiler/coreSyn/CoreSyn.lhs b/compiler/coreSyn/CoreSyn.lhs index 3c98f28..3f74dc5 100644 --- a/compiler/coreSyn/CoreSyn.lhs +++ b/compiler/coreSyn/CoreSyn.lhs @@ -60,6 +60,7 @@ 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) @@ -132,6 +133,11 @@ 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 @@ -615,6 +621,9 @@ 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` ()