From: simonpj@microsoft.com Date: Tue, 10 Nov 2009 17:20:17 +0000 (+0000) Subject: Don't inline a loop breaker, even if it has an INLINE pragma X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=f07f25fdbac2b885aea6aa62c0326840c85f7b59;p=ghc-hetmet.git Don't inline a loop breaker, even if it has an INLINE pragma We preserve the InlineRule on loop breakers, in the hope that they'll stop being a loop breaker later. So don't inline them! --- diff --git a/compiler/simplCore/SimplUtils.lhs b/compiler/simplCore/SimplUtils.lhs index dfe9e83..1511a2f 100644 --- a/compiler/simplCore/SimplUtils.lhs +++ b/compiler/simplCore/SimplUtils.lhs @@ -777,6 +777,10 @@ postInlineUnconditionally env top_lvl bndr occ_info rhs unfolding activeInline :: SimplEnv -> OutId -> Bool activeInline env id + | isNonRuleLoopBreaker (idOccInfo id) -- Things with an INLINE pragma may have + -- an unfolding *and* be a loop breaker + = False -- (maybe the knot is not yet untied) + | otherwise = case getMode env of SimplGently { sm_inline = inlining_on } -> inlining_on && isEarlyActive act