summaryrefslogtreecommitdiff
path: root/compiler/cmm/CmmNode.hs
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-03-15 13:07:57 +0000
committerSimon Marlow <marlowsd@gmail.com>2012-03-15 13:25:16 +0000
commitdaa2d5e3f2347677dea54d2b6853e8832132f6a8 (patch)
tree809ca9be6b85dd28b9868026c08ddc3598541038 /compiler/cmm/CmmNode.hs
parentbb7d711c4bb32096df938b30e1c455bc95420db5 (diff)
downloadhaskell-daa2d5e3f2347677dea54d2b6853e8832132f6a8.tar.gz
a bit more UNPACKing
Diffstat (limited to 'compiler/cmm/CmmNode.hs')
-rw-r--r--compiler/cmm/CmmNode.hs11
1 files changed, 7 insertions, 4 deletions
diff --git a/compiler/cmm/CmmNode.hs b/compiler/cmm/CmmNode.hs
index 7b8ee55029..cd46794580 100644
--- a/compiler/cmm/CmmNode.hs
+++ b/compiler/cmm/CmmNode.hs
@@ -35,8 +35,10 @@ import Prelude hiding (succ)
------------------------
-- CmmNode
+#define ULabel {-# UNPACK #-} !Label
+
data CmmNode e x where
- CmmEntry :: {-# UNPACK #-} !Label -> CmmNode C O
+ CmmEntry :: ULabel -> CmmNode C O
CmmComment :: FastString -> CmmNode O O
@@ -60,11 +62,12 @@ data CmmNode e x where
-- bug for what can be put in arguments, see
-- Note [Register Parameter Passing]
- CmmBranch :: Label -> CmmNode O C -- Goto another block in the same procedure
+ CmmBranch :: ULabel -> CmmNode O C
+ -- Goto another block in the same procedure
CmmCondBranch :: { -- conditional branch
cml_pred :: CmmExpr,
- cml_true, cml_false :: Label
+ cml_true, cml_false :: ULabel
} -> CmmNode O C
CmmSwitch :: CmmExpr -> [Maybe Label] -> CmmNode O C -- Table branch
@@ -122,7 +125,7 @@ data CmmNode e x where
tgt :: ForeignTarget, -- call target and convention
res :: [CmmFormal], -- zero or more results
args :: [CmmActual], -- zero or more arguments; see Note [Register parameter passing]
- succ :: Label, -- Label of continuation
+ succ :: ULabel, -- Label of continuation
updfr :: UpdFrameOffset, -- where the update frame is (for building infotable)
intrbl:: Bool -- whether or not the call is interruptible
} -> CmmNode O C