[commit: ghc] wip/libdw-prof: Debugging output (f11c85b)

git at git.haskell.org git at git.haskell.org
Sat May 6 22:26:29 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/libdw-prof
Link       : http://ghc.haskell.org/trac/ghc/changeset/f11c85b4f9d3e4476af6400c397ab764de23a659/ghc

>---------------------------------------------------------------

commit f11c85b4f9d3e4476af6400c397ab764de23a659
Author: Ben Gamari <ben at smart-cactus.org>
Date:   Mon Nov 21 22:26:13 2016 -0500

    Debugging output


>---------------------------------------------------------------

f11c85b4f9d3e4476af6400c397ab764de23a659
 compiler/nativeGen/Dwarf.hs       | 7 +++++++
 compiler/nativeGen/Dwarf/Types.hs | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/compiler/nativeGen/Dwarf.hs b/compiler/nativeGen/Dwarf.hs
index 1066169..497bb35 100644
--- a/compiler/nativeGen/Dwarf.hs
+++ b/compiler/nativeGen/Dwarf.hs
@@ -14,6 +14,8 @@ import Platform
 import Unique
 import UniqSupply
 
+import ErrUtils
+
 import Dwarf.Constants
 import Dwarf.Types
 
@@ -89,6 +91,11 @@ dwarfGen df modLoc us blocks = do
                | otherwise                 = [DwarfARange lowLabel highLabel]
   let aranges = dwarfARangesSection $$ pprDwarfARanges aranges' unitU
 
+  let extractUnwinds blk = dblUnwind blk : foldMap extractUnwinds (dblBlocks blk)
+  dumpIfSet_dyn df Opt_D_dump_debug "Pre-dwarfGen"
+      (nest 4 $ vcat $ map (ppr . extractUnwinds) blocks)
+  dumpIfSet_dyn df Opt_D_dump_debug "Post-dwarfGen"
+      (nest 4 $ vcat $ foldMap (map ppr . extractUnwinds) procs)
   return (infoSct $$ abbrevSct $$ lineSct $$ frameSct $$ aranges, us'')
 
 -- | Build an address range entry for one proc.
diff --git a/compiler/nativeGen/Dwarf/Types.hs b/compiler/nativeGen/Dwarf/Types.hs
index d4d8e24..ebdbee3 100644
--- a/compiler/nativeGen/Dwarf/Types.hs
+++ b/compiler/nativeGen/Dwarf/Types.hs
@@ -264,6 +264,8 @@ data DwarfFrameProc
     , dwFdeBlocks  :: [DwarfFrameBlock]
       -- ^ List of blocks. Order must match asm!
     }
+instance Outputable DwarfFrameProc where
+    ppr x = ppr (dwFdeProc x) <> colon <+> hsep (map ppr $ dwFdeBlocks x)
 
 -- | Unwind instructions for a block. Will become part of the
 -- containing FDE.
@@ -390,7 +392,9 @@ pprFrameBlock (DwarfFrameBlock hasInfo uws0) =
                                if needsOffset then text "-1" else empty
                       doc = sdocWithPlatform $ \plat ->
                            pprByte dW_CFA_set_loc $$ pprWord lblDoc $$
-                           vcat (map (uncurry $ pprSetUnwind plat) changed)
+                           vcat (map (uncurry $ pprSetUnwind' plat) changed)
+                      pprSetUnwind' plat b c =
+                          ifPprDebug (text "# "<+>ppr changed) $$ pprSetUnwind plat b c
                   in (doc, uws)
 
 -- Note [Info Offset]



More information about the ghc-commits mailing list