Charge 1 for each case alternative in exprStats
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 13 Feb 2013 08:52:06 +0000 (08:52 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 13 Feb 2013 08:52:06 +0000 (08:52 +0000)
This doesn't affect inlining, only the stats reported by -dshow-passes.
But we were getting un-naturally small numbers for some big case expressions.

compiler/coreSyn/CoreUtils.lhs

index 6726087..4e45da4 100644 (file)
@@ -1456,7 +1456,11 @@ exprStats (Cast e co)     = coStats co `plusCS` exprStats e
 exprStats (Tick _ e)      = exprStats e
 
 altStats :: CoreAlt -> CoreStats
-altStats (_, bs, r) = sumCS bndrStats bs `plusCS` exprStats r
+altStats (_, bs, r) = altBndrStats bs `plusCS` exprStats r
+
+altBndrStats :: [Var] -> CoreStats
+-- Charge one for the alternative, not for each binder
+altBndrStats vs = oneTM `plusCS` sumCS (tyStats . varType) vs
 
 tyStats :: Type -> CoreStats
 tyStats ty = zeroCS { cs_ty = typeSize ty }