From 0084ab49ab3c0123c4b7f9523d092af45bccfd41 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Thu, 9 Sep 2010 08:54:41 +0000 Subject: [PATCH] Fix simplifier statistics --- compiler/simplCore/SimplCore.lhs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/compiler/simplCore/SimplCore.lhs b/compiler/simplCore/SimplCore.lhs index dd0422b..2a41a0e 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 -- 1.7.10.4