Fix a nasty infelicity in the size computation of CoreUnfold
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.
Showing
Please register or sign in to comment