diff options
author | simonpj@microsoft.com <unknown> | 2010-09-09 08:54:41 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2010-09-09 08:54:41 +0000 |
commit | 0084ab49ab3c0123c4b7f9523d092af45bccfd41 (patch) | |
tree | cea4c2b7d1d64941ed5aaead0969f1c09492a9ed | |
parent | 4f567555306f33c96348eb3b363ca1cd51a9ef8b (diff) | |
download | haskell-0084ab49ab3c0123c4b7f9523d092af45bccfd41.tar.gz |
Fix simplifier statistics
-rw-r--r-- | compiler/simplCore/SimplCore.lhs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler/simplCore/SimplCore.lhs b/compiler/simplCore/SimplCore.lhs index dd0422b513..2a41a0eb91 100644 --- a/compiler/simplCore/SimplCore.lhs +++ b/compiler/simplCore/SimplCore.lhs @@ -496,8 +496,9 @@ simplifyPgmIO pass@(CoreDoSimplify mode max_iterations switches) -- Subtract 1 from iteration_no to get the -- number of iterations we actually completed - return ("Simplifier baled out", iteration_no - 1, total_counts, - guts { mg_binds = binds, mg_rules = rules }) + return ( "Simplifier baled out", iteration_no - 1 + , totalise counts_so_far + , guts { mg_binds = binds, mg_rules = rules } ) -- Try and force thunks off the binds; significantly reduces -- space usage, especially with -O. JRS, 000620. @@ -542,8 +543,9 @@ simplifyPgmIO pass@(CoreDoSimplify mode max_iterations switches) -- Stop if nothing happened; don't dump output if isZeroSimplCount counts1 then - return ("Simplifier reached fixed point", iteration_no, total_counts, - guts { mg_binds = binds1, mg_rules = rules1 }) + return ( "Simplifier reached fixed point", iteration_no + , totalise (counts1 : counts_so_far) -- Include "free" ticks + , guts { mg_binds = binds1, mg_rules = rules1 } ) else do { -- Short out indirections -- We do this *after* at least one run of the simplifier @@ -565,8 +567,9 @@ simplifyPgmIO pass@(CoreDoSimplify mode max_iterations switches) (us1, us2) = splitUniqSupply us -- Remember the counts_so_far are reversed - total_counts = foldr (\c acc -> acc `plusSimplCount` c) - (zeroSimplCount dflags) counts_so_far + totalise :: [SimplCount] -> SimplCount + totalise = foldr (\c acc -> acc `plusSimplCount` c) + (zeroSimplCount dflags) ------------------- end_iteration :: DynFlags -> CoreToDo -> Int |