From c406b5bde899dd2b28e5239937c909d675bca356 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Tue, 15 Feb 2011 14:36:55 +0000 Subject: [PATCH] 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. --- compiler/coreSyn/CoreUtils.lhs | 1 + 1 file changed, 1 insertion(+) 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 -- 1.7.10.4