[commit: ghc] ghc-7.6: Merge b737a4 into the 7.6 branch, curing Trac #7748 (3ed9baf)

Simon Peyton Jones simonpj at microsoft.com
Tue Apr 16 08:29:55 CEST 2013


Repository : http://darcs.haskell.org/ghc.git/

On branch  : ghc-7.6

https://github.com/ghc/ghc/commit/3ed9baf44904ad7ca0402f5a1b493a23d9d49253

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

commit 3ed9baf44904ad7ca0402f5a1b493a23d9d49253
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Tue Apr 16 07:27:23 2013 +0100

    Merge b737a4 into the 7.6 branch, curing Trac #7748
    
    The caching of goals in the constraint solver led to a
    equality-constraint loop even in a really simple program!
    
        commit b737a45391201fd475b89227ed1d7c9b72b24eea
        Author: Simon Peyton Jones <simonpj at microsoft.com>
        Date:   Fri Aug 31 10:05:03 2012 +0100
    
        More simplifications to the constraint solver
    
        * inert_solved becomes dictionaries-only, inert_solved_dicts
    
        * inert_solved_dicts is used only to cache the result of uses
          of a top level instance declaration, just like inert_solved_funeqs
    
        * That in turn simplifies xCtFlavor and rewriteCtFlavor, because
          they no longer need a "should I cache" parameter.  (Moreover the
          settings for this parameter were very subtle; it's easy to get
          loops if you cache too much.  Caching only top-level instance
          uses is much safer, and eliminates all these subtle cases.)

 compiler/typecheck/TcCanonical.lhs |  27 +++++-----
 compiler/typecheck/TcInteract.lhs  |  18 +++----
 compiler/typecheck/TcSMonad.lhs    | 104 +++++++++++++++----------------------
 compiler/typecheck/TcSimplify.lhs  |   2 +-
 4 files changed, 66 insertions(+), 85 deletions(-)


Diff suppressed because of size. To see it, use:

    git show 3ed9baf44904ad7ca0402f5a1b493a23d9d49253



More information about the ghc-commits mailing list