Introduce the flag -dsuppress-timestamps to avoid timestamps in dumps.
authorAndreas Klebinger <klebinger.andreas@gmx.at>
Tue, 20 Feb 2018 18:19:19 +0000 (13:19 -0500)
committerBen Gamari <ben@smart-cactus.org>
Sun, 25 Feb 2018 21:25:19 +0000 (16:25 -0500)
This makes it easier to diff dumps which are otherwise identical.

Also updated the description of -dsuppress-all as parts of these also
apply to stages other than core.

Test Plan: Looking at dump result.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4429

compiler/main/DynFlags.hs
compiler/main/ErrUtils.hs
docs/users_guide/debugging.rst

index 01432b6..b7720dd 100644 (file)
@@ -583,6 +583,7 @@ data GeneralFlag
    | Opt_SuppressUniques
    | Opt_SuppressStgFreeVars
    | Opt_SuppressTicks     -- Replaces Opt_PprShowTicks
+   | Opt_SuppressTimestamps -- ^ Suppress timestamps in dumps
 
    -- temporary flags
    | Opt_AutoLinkPackages
@@ -3040,7 +3041,8 @@ dynamic_flags_deps = [
                   setGeneralFlag Opt_SuppressIdInfo
                   setGeneralFlag Opt_SuppressTicks
                   setGeneralFlag Opt_SuppressStgFreeVars
-                  setGeneralFlag Opt_SuppressTypeSignatures)
+                  setGeneralFlag Opt_SuppressTypeSignatures
+                  setGeneralFlag Opt_SuppressTimestamps)
 
         ------ Debugging ----------------------------------------------------
   , make_ord_flag defGhcFlag "dstg-stats"
@@ -3835,10 +3837,12 @@ dFlagsDeps = [
   flagSpec "suppress-idinfo"            Opt_SuppressIdInfo,
   flagSpec "suppress-unfoldings"        Opt_SuppressUnfoldings,
   flagSpec "suppress-module-prefixes"   Opt_SuppressModulePrefixes,
+  flagSpec "suppress-timestamps"        Opt_SuppressTimestamps,
   flagSpec "suppress-type-applications" Opt_SuppressTypeApplications,
   flagSpec "suppress-type-signatures"   Opt_SuppressTypeSignatures,
   flagSpec "suppress-uniques"           Opt_SuppressUniques,
-  flagSpec "suppress-var-kinds"         Opt_SuppressVarKinds]
+  flagSpec "suppress-var-kinds"         Opt_SuppressVarKinds
+  ]
 
 -- | These @-f\<blah\>@ flags can all be reversed with @-fno-\<blah\>@
 fFlags :: [FlagSpec GeneralFlag]
index 13ff017..c7fb8ba 100644 (file)
@@ -500,9 +500,12 @@ dumpSDoc dflags print_unqual flag hdr doc =
         doc' <- if null hdr
                 then return doc
                 else do t <- getCurrentTime
-                        let d = text (show t)
-                              $$ blankLine
-                              $$ doc
+                        let timeStamp = if (gopt Opt_SuppressTimestamps dflags)
+                                          then empty
+                                          else text (show t)
+                        let d = timeStamp
+                                $$ blankLine
+                                $$ doc
                         return $ mkDumpDoc hdr d
         defaultLogActionHPrintDoc dflags handle doc' dump_style
 
index cf92634..d11cc04 100644 (file)
@@ -612,7 +612,7 @@ are doing, not all of it will be useful. Use these flags to suppress the
 parts that you are not interested in.
 
 .. ghc-flag:: -dsuppress-all
-    :shortdesc: In core dumps, suppress everything (except for uniques) that is
+    :shortdesc: In dumps, suppress everything (except for uniques) that is
         suppressible.
     :type: dynamic
 
@@ -663,6 +663,13 @@ parts that you are not interested in.
     Suppress the printing of module qualification prefixes. This is the
     ``Data.List`` in ``Data.List.length``.
 
+.. ghc-flag:: -dsuppress-timestamps
+    :shortdesc: Suppress timestamps in dumps
+    :type: dynamic
+
+    Suppress the printing of timestamps.
+    This makes it easier to diff dumps.
+
 .. ghc-flag:: -dsuppress-type-signatures
     :shortdesc: Suppress type signatures
     :type: dynamic