[commit: ghc] master: Add dump flag for timing output (383016b)
git at git.haskell.org
git at git.haskell.org
Wed Nov 15 20:05:52 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/383016b8ec3af3b0b1370e8966bba00397ddb848/ghc
>---------------------------------------------------------------
commit 383016b8ec3af3b0b1370e8966bba00397ddb848
Author: Ben Gamari <bgamari.foss at gmail.com>
Date: Wed Nov 15 11:40:16 2017 -0500
Add dump flag for timing output
This allows you to use `-ddump-to-file -ddump-timings` for more useful
dump output.
Test Plan: Try it
Subscribers: rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D4195
>---------------------------------------------------------------
383016b8ec3af3b0b1370e8966bba00397ddb848
compiler/main/DynFlags.hs | 3 +++
compiler/main/ErrUtils.hs | 27 ++++++++++++++++++---------
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 53a4033..5888acc 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -392,6 +392,7 @@ data DumpFlag
| Opt_D_dump_hi_diffs
| Opt_D_dump_mod_cycles
| Opt_D_dump_mod_map
+ | Opt_D_dump_timings
| Opt_D_dump_view_pattern_commoning
| Opt_D_verbose_core2core
| Opt_D_dump_debug
@@ -3081,6 +3082,8 @@ dynamic_flags_deps = [
(setDumpFlag Opt_D_dump_mod_cycles)
, make_ord_flag defGhcFlag "ddump-mod-map"
(setDumpFlag Opt_D_dump_mod_map)
+ , make_ord_flag defGhcFlag "ddump-timings"
+ (setDumpFlag Opt_D_dump_timings)
, make_ord_flag defGhcFlag "ddump-view-pattern-commoning"
(setDumpFlag Opt_D_dump_view_pattern_commoning)
, make_ord_flag defGhcFlag "ddump-to-file"
diff --git a/compiler/main/ErrUtils.hs b/compiler/main/ErrUtils.hs
index 258fc11..1aa5238 100644
--- a/compiler/main/ErrUtils.hs
+++ b/compiler/main/ErrUtils.hs
@@ -614,7 +614,7 @@ withTiming :: MonadIO m
-> m a
withTiming getDFlags what force_result action
= do dflags <- getDFlags
- if verbosity dflags >= 2
+ if verbosity dflags >= 2 || dopt Opt_D_dump_timings dflags
then do liftIO $ logInfo dflags (defaultUserStyle dflags)
$ text "***" <+> what <> colon
alloc0 <- liftIO getAllocationCounter
@@ -625,14 +625,23 @@ withTiming getDFlags what force_result action
alloc1 <- liftIO getAllocationCounter
-- recall that allocation counter counts down
let alloc = alloc0 - alloc1
- liftIO $ logInfo dflags (defaultUserStyle dflags)
- (text "!!!" <+> what <> colon <+> text "finished in"
- <+> doublePrec 2 (realToFrac (end - start) * 1e-9)
- <+> text "milliseconds"
- <> comma
- <+> text "allocated"
- <+> doublePrec 3 (realToFrac alloc / 1024 / 1024)
- <+> text "megabytes")
+ time = realToFrac (end - start) * 1e-9
+
+ when (verbosity dflags >= 2)
+ $ liftIO $ logInfo dflags (defaultUserStyle dflags)
+ (text "!!!" <+> what <> colon <+> text "finished in"
+ <+> doublePrec 2 time
+ <+> text "milliseconds"
+ <> comma
+ <+> text "allocated"
+ <+> doublePrec 3 (realToFrac alloc / 1024 / 1024)
+ <+> text "megabytes")
+
+ liftIO $ dumpIfSet_dyn dflags Opt_D_dump_timings ""
+ $ hsep [ what <> colon
+ , text "alloc=" <> ppr alloc
+ , text "time=" <> doublePrec 3 time
+ ]
pure r
else action
More information about the ghc-commits
mailing list