Tue Oct  3 08:30:57 PDT 2006  [EMAIL PROTECTED]
  * Make recursion and RULES interact better
  
  See Trac #683
  
  This patch improves the interaction of recursion and RULES; at least I
  hope it does.   The problem was that a RULE was being treated uniformly like
  an "extra RHS". This worked badly when you have a non-recursive definition
  that is made recursive only by RULE.
  
  This patch maeks the occurrence analyser know whether a binder is referred to
  only from RULES (the RulesOnly constructor in OccInfo).  Then we can ignore
  such edges when deciding on the order of bindings in a letrec, and when
  setting the LoopBreaker flag.
  
  The remaining potential problem is this:
        rec{ f = ...g...
           ; g = ...f...
             RULE g True = ...
           }
  
  The RULE for g may not be visible in f's rhs.  This is fixable, but not
  today.
  
  

    M ./compiler/basicTypes/BasicTypes.lhs -2 +5
    M ./compiler/main/TidyPgm.lhs -2 +3
    M ./compiler/simplCore/OccurAnal.lhs -20 +36
    M ./compiler/simplCore/Simplify.lhs -1
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to