Thu Nov 19 03:57:36 PST 2009 [email protected]
* Fix a nasty infelicity in the size computation of CoreUnfold
Ignore-this: ecff5289ab14c0df572135bf0b5179d6
The size computation was treating gigantic case expressions as
practically free, which they really aren't. It was exacerbated by
recent decisions to charge 0 for naked variables and constructors, so
the RHS of the case might look free too. A good example was
Foreign.C.Error.errnoToIOError, which hsa lots of join points
that were getting inlined way to vigorously, so we had:
*** Simplifier Phase 2 [main]:
Result size = 2983
*** Core Linted result of Simplifier mode 2 [main], iteration 1 out of 4:
Result size = 640327
*** Core Linted result of Simplifier mode 2 [main], iteration 2 out of 4:
Result size = 1659
Notice that gigantic intermediate!
This patch adds a small charge for each *alternative*. Of course,
that'll also mean that there's a bit less inling of things involving
case expressions.
M ./compiler/coreSyn/CoreUnfold.lhs -1 +5
View patch online:
http://darcs.haskell.org/ghc/_darcs/patches/20091119115736-1287e-068f88a1ef20fd7ad61d85447d7465ddbae75d22.gz
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc