Comments only
authorSimon Peyton Jones <simonpj@microsoft.com>
Sat, 11 Jun 2011 13:21:39 +0000 (14:21 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Sat, 11 Jun 2011 13:21:39 +0000 (14:21 +0100)
compiler/coreSyn/CoreUtils.lhs

index 4146b62..19ac62f 100644 (file)
@@ -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