summaryrefslogtreecommitdiff
path: root/compiler/codeGen/CgUtils.hs
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2007-01-22 11:40:16 +0000
committerSimon Marlow <simonmar@microsoft.com>2007-01-22 11:40:16 +0000
commit7f1bc015a4094a8282ad4090768d780fd4d6122d (patch)
tree244574224a94cc0bd287fe4c6fae36791cc97eb5 /compiler/codeGen/CgUtils.hs
parent970cd21327e30e5b9af594884f1ac79334ed0582 (diff)
downloadhaskell-7f1bc015a4094a8282ad4090768d780fd4d6122d.tar.gz
Semi-tagging optimisation
In the generated code for case-of-variable, test the tag of the scrutinee closure and only enter if it is unevaluated. Also turn *off* vectored returns.
Diffstat (limited to 'compiler/codeGen/CgUtils.hs')
-rw-r--r--compiler/codeGen/CgUtils.hs3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/codeGen/CgUtils.hs b/compiler/codeGen/CgUtils.hs
index 804aeabd13..f2b3c72d40 100644
--- a/compiler/codeGen/CgUtils.hs
+++ b/compiler/codeGen/CgUtils.hs
@@ -17,6 +17,8 @@ module CgUtils (
tagToClosure,
cmmAndWord, cmmOrWord, cmmNegate, cmmEqWord, cmmNeWord,
+ cmmULtWord, cmmUGtWord,
+ cmmULeWord, cmmUGeWord,
cmmOffsetExprW, cmmOffsetExprB,
cmmRegOffW, cmmRegOffB,
cmmLabelOffW, cmmLabelOffB,
@@ -151,6 +153,7 @@ cmmOrWord e1 e2 = CmmMachOp mo_wordOr [e1, e2]
cmmAndWord e1 e2 = CmmMachOp mo_wordAnd [e1, e2]
cmmNeWord e1 e2 = CmmMachOp mo_wordNe [e1, e2]
cmmEqWord e1 e2 = CmmMachOp mo_wordEq [e1, e2]
+cmmULeWord e1 e2 = CmmMachOp mo_wordULe [e1, e2]
cmmULtWord e1 e2 = CmmMachOp mo_wordULt [e1, e2]
cmmUGeWord e1 e2 = CmmMachOp mo_wordUGe [e1, e2]
cmmUGtWord e1 e2 = CmmMachOp mo_wordUGt [e1, e2]