From 769f5c90a96742beec5e1870e68b3c7f21d9e573 Mon Sep 17 00:00:00 2001 From: Simon Peyton Jones Date: Sat, 11 Jun 2011 14:21:39 +0100 Subject: [PATCH] Comments only --- compiler/coreSyn/CoreUtils.lhs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/compiler/coreSyn/CoreUtils.lhs b/compiler/coreSyn/CoreUtils.lhs index 4146b62..19ac62f 100644 --- a/compiler/coreSyn/CoreUtils.lhs +++ b/compiler/coreSyn/CoreUtils.lhs @@ -592,6 +592,12 @@ exprIsCheap' good_app other_expr -- Applications and variables go_pap args = all (exprIsCheap' good_app) args -- Used to be "all exprIsTrivial args" due to concerns about -- duplicating nested constructor applications, but see #4978. + -- The principle here is that + -- let x = a +# b in c *# x + -- should behave equivalently to + -- c *# (a +# b) + -- Since lets with cheap RHSs are accepted, + -- so should paps with cheap arguments -------------- go_primop op args = primOpIsCheap op && all (exprIsCheap' good_app) args -- 1.7.10.4