diff options
author | Simon Marlow <simonmar@microsoft.com> | 2007-01-22 11:40:16 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2007-01-22 11:40:16 +0000 |
commit | 7f1bc015a4094a8282ad4090768d780fd4d6122d (patch) | |
tree | 244574224a94cc0bd287fe4c6fae36791cc97eb5 /compiler/codeGen/CgUtils.hs | |
parent | 970cd21327e30e5b9af594884f1ac79334ed0582 (diff) | |
download | haskell-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.hs | 3 |
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] |