Add -ddump-stg-final to dump stg as it is used for codegen.
authorklebinger.andreas@gmx.at <klebinger.andreas@gmx.at>
Fri, 5 Apr 2019 15:02:59 +0000 (17:02 +0200)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 12 Apr 2019 18:40:04 +0000 (14:40 -0400)
Intermediate STG does not contain free variables which can be useful
sometimes. So adding a flag to dump that info.

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

index ced0be5..dc12879 100644 (file)
@@ -384,6 +384,7 @@ data DumpFlag
    | Opt_D_dump_spec
    | Opt_D_dump_prep
    | Opt_D_dump_stg
+   | Opt_D_dump_stg_final
    | Opt_D_dump_call_arity
    | Opt_D_dump_exitify
    | Opt_D_dump_stranal
@@ -3339,6 +3340,8 @@ dynamic_flags_deps = [
         (setDumpFlag Opt_D_dump_prep)
   , make_ord_flag defGhcFlag "ddump-stg"
         (setDumpFlag Opt_D_dump_stg)
+  , make_ord_flag defGhcFlag "ddump-stg-final"
+        (setDumpFlag Opt_D_dump_stg_final)
   , make_ord_flag defGhcFlag "ddump-call-arity"
         (setDumpFlag Opt_D_dump_call_arity)
   , make_ord_flag defGhcFlag "ddump-exitify"
index 16c8db9..911d52c 100644 (file)
@@ -1470,6 +1470,8 @@ doCodeGen hsc_env this_mod data_tycons
     let dflags = hsc_dflags hsc_env
 
     let stg_binds_w_fvs = annTopBindingsFreeVars stg_binds
+    dumpIfSet_dyn dflags Opt_D_dump_stg_final
+                  "STG for code gen:" (pprGenStgTopBindings stg_binds_w_fvs)
     let cmm_stream :: Stream IO CmmGroup ()
         cmm_stream = {-# SCC "StgCmm" #-}
             StgCmm.codeGen dflags this_mod data_tycons
index 381bf18..ff02fc4 100644 (file)
@@ -380,6 +380,11 @@ These flags dump various phases of GHC's STG pipeline.
 
     Show the output of the intermediate STG-to-STG pass. (*lots* of output!)
 
+.. ghc-flag:: -ddump-stg-final
+    :shortdesc: Show output of last STG pass.
+    :type: dynamic
+
+    Show the output of the last STG pass before we generate Cmm.
 
 C-\\- representation
 ~~~~~~~~~~~~~~~~~~~~