From: simonpj@microsoft.com Date: Tue, 15 Feb 2011 14:36:55 +0000 (+0000) Subject: Ensure exprIsCheap/exprIsExpandable deal with Cast properly X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=c406b5bde899dd2b28e5239937c909d675bca356 Ensure exprIsCheap/exprIsExpandable deal with Cast properly This bug was causing a Lint error on the stable branch. For some reason it doesn't show up in HEAD, but it's still worth fixing. The point is that ((f `cast` co) a) is cheap if f has arity>1. This was being gratuitously missed before. --- diff --git a/compiler/coreSyn/CoreUtils.lhs b/compiler/coreSyn/CoreUtils.lhs index b50cb01..c901fc2 100644 --- a/compiler/coreSyn/CoreUtils.lhs +++ b/compiler/coreSyn/CoreUtils.lhs @@ -563,6 +563,7 @@ exprIsCheap' good_app other_expr -- Applications and variables = go other_expr [] where -- Accumulate value arguments, then decide + go (Cast e _) val_args = go e val_args go (App f a) val_args | isRuntimeArg a = go f (a:val_args) | otherwise = go f val_args