Improve -dsuppress-coercions
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 8 Feb 2017 11:31:32 +0000 (11:31 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 8 Feb 2017 11:33:32 +0000 (11:33 +0000)
The -dsuppress-coercions flag was being ignored when printing the
CastIt constructor in SimplUtils.SimplCont.  This fixes ths problem,
and improves what is printed when suppressing coercions, to show the
size of the suppressed coercion.

compiler/coreSyn/PprCore.hs
compiler/simplCore/SimplUtils.hs

index 196a9b9..c61b166 100644 (file)
@@ -12,7 +12,7 @@ module PprCore (
         pprCoreExpr, pprParendExpr,
         pprCoreBinding, pprCoreBindings, pprCoreAlt,
         pprCoreBindingWithSize, pprCoreBindingsWithSize,
-        pprRules
+        pprRules, pprOptCo
     ) where
 
 import CoreSyn
@@ -130,9 +130,10 @@ noParens :: SDoc -> SDoc
 noParens pp = pp
 
 pprOptCo :: Coercion -> SDoc
+-- Print a coercion optionally; i.e. honouring -dsuppress-coercions
 pprOptCo co = sdocWithDynFlags $ \dflags ->
               if gopt Opt_SuppressCoercions dflags
-              then text "..."
+              then angleBrackets (text "Co:" <> int (coercionSize co))
               else parens (sep [ppr co, dcolon <+> ppr (coercionType co)])
 
 ppr_expr :: OutputableBndr b => (SDoc -> SDoc) -> Expr b -> SDoc
index 2e985c5..7deaf5b 100644 (file)
@@ -179,7 +179,7 @@ instance Outputable DupFlag where
 
 instance Outputable SimplCont where
   ppr (Stop ty interesting) = text "Stop" <> brackets (ppr interesting) <+> ppr ty
-  ppr (CastIt co cont  )    = (text "CastIt" <+> ppr co) $$ ppr cont
+  ppr (CastIt co cont  )    = (text "CastIt" <+> pprOptCo co) $$ ppr cont
   ppr (TickIt t cont)       = (text "TickIt" <+> ppr t) $$ ppr cont
   ppr (ApplyToTy  { sc_arg_ty = ty, sc_cont = cont })
     = (text "ApplyToTy" <+> pprParendType ty) $$ ppr cont