diff options
author | Simon Marlow <marlowsd@gmail.com> | 2015-09-21 09:14:33 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2015-09-23 14:07:44 +0100 |
commit | 939a7d6367501d43be73f4e41db7395af1194989 (patch) | |
tree | e915a6cc270fca5e0b4c803b38e5467f9f4d61c3 /compiler/cmm/MkGraph.hs | |
parent | 65bf7baa81772b7f07a4c74d3510dbd2ef03592d (diff) | |
download | haskell-939a7d6367501d43be73f4e41db7395af1194989.tar.gz |
Annotate CmmBranch with an optional likely target
Summary:
This allows the code generator to give hints to later code generation
steps about which branch is most likely to be taken. Right now it
is only taken into account in one place: a special case in
CmmContFlowOpt that swapped branches over to maximise the chance of
fallthrough, which is now disabled when there is a likelihood setting.
Test Plan: validate
Reviewers: austin, simonpj, bgamari, ezyang, tibbe
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1273
Diffstat (limited to 'compiler/cmm/MkGraph.hs')
-rw-r--r-- | compiler/cmm/MkGraph.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/cmm/MkGraph.hs b/compiler/cmm/MkGraph.hs index d2aa4aa057..657585e75a 100644 --- a/compiler/cmm/MkGraph.hs +++ b/compiler/cmm/MkGraph.hs @@ -35,7 +35,7 @@ import OrdList import Control.Monad import Data.List import Data.Maybe -import Prelude (($),Int,Eq(..)) -- avoid importing (<*>) +import Prelude (($),Int,Bool,Eq(..)) -- avoid importing (<*>) #include "HsVersions.h" @@ -221,8 +221,9 @@ mkJumpExtra dflags conv e actuals updfr_off extra_stack = lastWithArgsAndExtraStack dflags Jump Old conv actuals updfr_off extra_stack $ toCall e Nothing updfr_off 0 -mkCbranch :: CmmExpr -> BlockId -> BlockId -> CmmAGraph -mkCbranch pred ifso ifnot = mkLast (CmmCondBranch pred ifso ifnot) +mkCbranch :: CmmExpr -> BlockId -> BlockId -> Maybe Bool -> CmmAGraph +mkCbranch pred ifso ifnot likely = + mkLast (CmmCondBranch pred ifso ifnot likely) mkSwitch :: CmmExpr -> SwitchTargets -> CmmAGraph mkSwitch e tbl = mkLast $ CmmSwitch e tbl |