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

On branch  : supercompiler

http://hackage.haskell.org/trac/ghc/changeset/a7cf8d9d8d9ac5e4f7003665a9c051d1dcd49914

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

commit a7cf8d9d8d9ac5e4f7003665a9c051d1dcd49914
Author: Max Bolingbroke <batterseapo...@hotmail.com>
Date:   Wed Mar 28 12:05:10 2012 +0100

    Start paying attention to loop-breaker-ness again

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

 .../Supercompile/Evaluator/Evaluate.hs             |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs 
b/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
index b1dab5f..85ad931 100644
--- a/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
+++ b/compiler/supercompile/Supercompile/Evaluator/Evaluate.hs
@@ -101,7 +101,10 @@ summariseContext h k = trainCarFoldr go (True, [], 
BoringCtxt) k
 ghcHeuristics :: Id -> AnnedTerm {- try not to pull on this, it does a lot of 
work -}
               -> ContextSummary -> Bool
 ghcHeuristics x e (lone_variable, arg_infos, cont_info)
-  = (try (idUnfolding x) `mplus` try answer_unf) `orElse` trce (text "No 
unfolding") False
+  | isStrongLoopBreaker (idOccInfo x)
+  = False -- NB: have to check this (not just use idUnfolding) because we 
might consider "e"
+  | otherwise
+  = (try (realIdUnfolding x) `mplus` try answer_unf) `orElse` trce (text "No 
unfolding") False
   where
     try unf = case unf of
       CoreSyn.CoreUnfolding { CoreSyn.uf_is_top = is_top, 
CoreSyn.uf_is_work_free = is_work_free, CoreSyn.uf_expandable = expandable



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

Reply via email to