Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : supercompiler

http://hackage.haskell.org/trac/ghc/changeset/6f53c83c46a145f02f0e5b94aefce58685942137

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

commit 6f53c83c46a145f02f0e5b94aefce58685942137
Author: Max Bolingbroke <batterseapo...@hotmail.com>
Date:   Wed Mar 28 11:23:48 2012 +0100

    More feedback from ghcHeuristics

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

 .../Supercompile/Evaluator/Evaluate.hs             |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs 
b/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
index 6a69dbc..977e703 100644
--- a/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
+++ b/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
@@ -104,16 +104,20 @@ ghcHeuristics x (lone_variable, arg_infos, cont_info) = 
case idUnfolding x of
                            -> tryUnfolding dflags1 x lone_variable 
                                            arg_infos cont_info is_top 
                                            is_cheap uf_arity guidance
-  CoreSyn.NoUnfolding      -> False
-  CoreSyn.OtherCon {}      -> False
+  CoreSyn.NoUnfolding      -> trce (text "No unfolding") False
+  CoreSyn.OtherCon {}      -> trce (text "No positive unfolding") False
   -- GHC actually only looks through DFunUnfoldings in exprIsConApp_maybe,
   -- so I'll do this rough heuristic instead:
-  CoreSyn.DFunUnfolding {} -> length arg_infos >= idArity x
+  CoreSyn.DFunUnfolding {} -> trce (text "Dictionary unfolding") length 
arg_infos >= idArity x
  where dflags0 = defaultDynFlags (error "ghcHeuristics: Settings in DynFlags 
used!")
        -- Set these two flags so that we get information about failed 
inlinings:
        dflags1 | tRACE     = dopt_set (dopt_set dflags0 
Opt_D_verbose_core2core) Opt_D_dump_inlinings
                | otherwise = dflags0
 
+       trce :: SDoc -> a -> a
+       trce | tRACE     = pprTrace ("Considering inlining: " ++ showSDoc (ppr 
x))
+            | otherwise = flip const
+
 -- | Non-expansive simplification we can do everywhere safely
 --
 -- Normalisation only ever releases deeds: it is *never* a net consumer of 
deeds. So normalisation



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to