| IAmALoopBreaker -- Used by the occurrence analyser to mark loop-breakers
-- in a group of recursive definitions
- !RulesOnly -- True <=> This loop breaker mentions the other binders
- -- in its recursive group only in its RULES, not
- -- in its rhs
- -- See OccurAnal Note [RulesOnly]
+ !RulesOnly -- True <=> This is a weak or rules-only loop breaker
+ -- See OccurAnal Note [Weak loop breakers]
type RulesOnly = Bool
\end{code}
neverInlineSpec = Inline NeverActive False -- NOINLINE
instance Outputable Activation where
- ppr AlwaysActive = empty -- The default
+ ppr NeverActive = ptext SLIT("NEVER")
+ ppr AlwaysActive = ptext SLIT("ALWAYS")
ppr (ActiveBefore n) = brackets (char '~' <> int n)
ppr (ActiveAfter n) = brackets (int n)
- ppr NeverActive = ptext SLIT("NEVER")
instance Outputable InlineSpec where
- ppr (Inline act True) = ptext SLIT("INLINE") <> ppr act
- ppr (Inline act False) = ptext SLIT("NOINLINE") <> ppr act
+ ppr (Inline act is_inline)
+ | is_inline = ptext SLIT("INLINE")
+ <> case act of
+ AlwaysActive -> empty
+ other -> ppr act
+ | otherwise = ptext SLIT("NOINLINE")
+ <> case act of
+ NeverActive -> empty
+ other -> ppr act
isActive :: CompilerPhase -> Activation -> Bool
isActive p NeverActive = False