-
Simon Peyton Jones authored
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.
d21c80ea