diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2013-12-18 00:11:25 +0100 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2013-12-18 00:11:25 +0100 |
commit | e009b4f1676c3ae080b59cb1e0914409e0c4660c (patch) | |
tree | cd5441a9f21efda4c136dcc44e4b1c4dcecabfea /compiler/simplCore/CommonContext.lhs | |
parent | 043af4d88ecfa2857519f035dea6f8dd7d0133ef (diff) | |
download | haskell-wip/common-context.tar.gz |
Move Common Context after CSEwip/common-context
We had something like
let $j = ...
in case foo of ... -> case $j a b c of ... -> case foo of
and moving the inner "case foo" into $j prevented CSE from happening
here.
(Although presumably the "let $j" could be moved inside the outer case
before CSE, to give CSE a greater scope here.)
Diffstat (limited to 'compiler/simplCore/CommonContext.lhs')
-rw-r--r-- | compiler/simplCore/CommonContext.lhs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/simplCore/CommonContext.lhs b/compiler/simplCore/CommonContext.lhs index 9199e70154..1cfcbe9912 100644 --- a/compiler/simplCore/CommonContext.lhs +++ b/compiler/simplCore/CommonContext.lhs @@ -52,6 +52,8 @@ findInterestingLet (Let (Rec pairs) body) = process :: Var -> CoreExpr -> CoreExpr -> (Var, CoreExpr, CoreExpr) process v e body | idArity v <= 0 = (v, e, body) + -- TODO: check for non value args here. For now, ignore this let then + -- Possibly later: Check if all uses have the same type argument | otherwise = case contextOf v body of OneUse cts | not (null cts) -> |