Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : master
http://hackage.haskell.org/trac/ghc/changeset/f43bedeef3ecdf4d037a2484a0f0a3672ab60299 >--------------------------------------------------------------- commit f43bedeef3ecdf4d037a2484a0f0a3672ab60299 Author: Simon Marlow <[email protected]> Date: Tue May 24 13:18:55 2011 +0100 make the change to go_pap suggested in #4978. According to nofib, one program is improved quite dramatically (fft2 30% less allocation), and everything else was unchanged. >--------------------------------------------------------------- compiler/coreSyn/CoreUtils.lhs | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/compiler/coreSyn/CoreUtils.lhs b/compiler/coreSyn/CoreUtils.lhs index a0a229f..4146b62 100644 --- a/compiler/coreSyn/CoreUtils.lhs +++ b/compiler/coreSyn/CoreUtils.lhs @@ -589,11 +589,9 @@ exprIsCheap' good_app other_expr -- Applications and variables go _ _ = False -------------- - go_pap args = all exprIsTrivial args - -- For constructor applications and primops, check that all - -- the args are trivial. We don't want to treat as cheap, say, - -- (1:2:3:4:5:[]) - -- We'll put up with one constructor application, but not dozens + 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. -------------- go_primop op args = primOpIsCheap op && all (exprIsCheap' good_app) args _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
