[commit: ghc] wip/T14068: Loopification: Clear OccInfo of loopified binding (6408e0d)

git at git.haskell.org git at git.haskell.org
Mon Nov 6 19:31:59 UTC 2017


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

On branch  : wip/T14068
Link       : http://ghc.haskell.org/trac/ghc/changeset/6408e0da7b54cf25cbace9c4b0f84ddaafe54060/ghc

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

commit 6408e0da7b54cf25cbace9c4b0f84ddaafe54060
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Mon Nov 6 14:25:48 2017 -0500

    Loopification: Clear OccInfo of loopified binding
    
    as a loopified binding is no longer a loop breaker.
    
    This is a stab in the dark at maybe working around #14430, where I
    observe unsimplified unfoldings where I expec them to be simplified..


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

6408e0da7b54cf25cbace9c4b0f84ddaafe54060
 compiler/coreSyn/CoreOpt.hs  | 2 +-
 compiler/stranal/WorkWrap.hs | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/compiler/coreSyn/CoreOpt.hs b/compiler/coreSyn/CoreOpt.hs
index 550a0a7..e3462c4 100644
--- a/compiler/coreSyn/CoreOpt.hs
+++ b/compiler/coreSyn/CoreOpt.hs
@@ -679,7 +679,7 @@ loopificationJoinPointBinding_maybe bndr rhs
         -- To tread with caution, let's keep it this way
         bndr' = (`setIdUnfolding` noUnfolding) $
                 (`setInlinePragma` neverInlinePragma) $
-                zapIdTailCallInfo $
+                (`setIdOccInfo` noOccInfo) $
                 bndr
     in  Just (bndr', join_bndr, mkLams bndrs body)
 
diff --git a/compiler/stranal/WorkWrap.hs b/compiler/stranal/WorkWrap.hs
index 49045d9..4eb2f10 100644
--- a/compiler/stranal/WorkWrap.hs
+++ b/compiler/stranal/WorkWrap.hs
@@ -479,7 +479,7 @@ splitFun dflags fam_envs fn_id fn_info wrap_dmds res_info rhs
             work_act = case work_inline of
               -- See Note [Activation for workers]
               NoInline -> inl_act inl_prag
-              NoUserInline | isNeverActive (inl_act inl_prag) -> inl_act inl_prag
+              NoUserInline | isNeverActive (inl_act inl_prag) -> NeverActive
               _        -> wrap_act
             work_prag = InlinePragma { inl_src = SourceText "{-# INLINE"
                                      , inl_inline = work_inline



More information about the ghc-commits mailing list