[commit: ghc] wip/T14152: Exitification: Capture variables in the right order (062b206)

git at git.haskell.org git at git.haskell.org
Wed Sep 20 20:22:15 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/T14152
Link       : http://ghc.haskell.org/trac/ghc/changeset/062b2062f65fb16f6defa2c3103f20825f1aff62/ghc

>---------------------------------------------------------------

commit 062b2062f65fb16f6defa2c3103f20825f1aff62
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Wed Sep 20 16:21:30 2017 -0400

    Exitification: Capture variables in the right order
    
    (this commit will be squashed before merging)


>---------------------------------------------------------------

062b2062f65fb16f6defa2c3103f20825f1aff62
 compiler/simplCore/Exitify.hs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/compiler/simplCore/Exitify.hs b/compiler/simplCore/Exitify.hs
index 6b41510..d7ad33b 100644
--- a/compiler/simplCore/Exitify.hs
+++ b/compiler/simplCore/Exitify.hs
@@ -173,7 +173,7 @@ exitify in_scope pairs =
     -- Case right hand sides are in tail-call position
     go captured (_, AnnCase scrut bndr ty alts) = do
         alts' <- forM alts $ \(dc, pats, rhs) -> do
-            rhs' <- go (pats ++ bndr : captured) rhs
+            rhs' <- go (captured ++ [bndr] ++ pats) rhs
             return (dc, pats, rhs')
         return $ Case (deAnnotate scrut) bndr ty alts'
 
@@ -182,9 +182,9 @@ exitify in_scope pairs =
         | AnnNonRec j rhs <- ann_bind
         , Just join_arity <- isJoinId_maybe j
         = do let (params, join_body) = collectNAnnBndrs join_arity rhs
-             join_body' <- go (params ++ captured) join_body
+             join_body' <- go (captured ++ params) join_body
              let rhs' = mkLams params join_body'
-             body' <- go (j : captured) body
+             body' <- go (captured ++ [j]) body
              return $ Let (NonRec j rhs') body'
 
         -- rec join point, RHSs and body are in tail-call position
@@ -194,15 +194,15 @@ exitify in_scope pairs =
              pairs' <- forM pairs $ \(j,rhs) -> do
                  let join_arity = idJoinArity j
                      (params, join_body) = collectNAnnBndrs join_arity rhs
-                 join_body' <- go (params ++ js ++ captured) join_body
+                 join_body' <- go (captures ++ js ++ params) join_body
                  let rhs' = mkLams params join_body'
                  return (j, rhs')
-             body' <- go (js ++ captured) body
+             body' <- go (captured ++ js) body
              return $ Let (Rec pairs') body'
 
         -- normal Let, only the body is in tail-call position
         | otherwise
-        = do body' <- go (bindersOf bind ++ captured) body
+        = do body' <- go (captured ++ bindersOf bind ) body
              return $ Let bind body'
       where bind = deAnnBind ann_bind
 



More information about the ghc-commits mailing list