diff --git a/ghc/compiler/coreSyn/CoreUtils.lhs b/ghc/compiler/coreSyn/CoreUtils.lhs index 0c01569b73ecb21cb92823e59c8a02fbbca66143..5e9736b16fb7d2746ef0b37b9ab1adef8c618127 100644 --- a/ghc/compiler/coreSyn/CoreUtils.lhs +++ b/ghc/compiler/coreSyn/CoreUtils.lhs @@ -570,11 +570,11 @@ exprEtaExpandArity :: CoreExpr -> Int -- The number of args the thing can be ap -- Hence "generous" arity exprEtaExpandArity e - = go e + = go e `max` 0 -- Never go -ve! where go (Var v) = idArity v go (App f (Type _)) = go f - go (App f a) | exprIsCheap a = (go f - 1) `max` 0 -- Never go -ve! + go (App f a) | exprIsCheap a = go f - 1 go (Lam x e) | isId x = go e + 1 | otherwise = go e go (Note n e) | ok_note n = go e