Improve dependency analysis; makes more dictionaries inlinable
authorsimonpj@microsoft.com <unknown>
Wed, 6 Dec 2006 07:18:45 +0000 (07:18 +0000)
committersimonpj@microsoft.com <unknown>
Wed, 6 Dec 2006 07:18:45 +0000 (07:18 +0000)
commit94cbe022cbe18c2ae8da829d39c0896d615f8f1c
tree1c6fd5cb3303f1e0f189ceab930a938c8440b034
parentb55fe864599e77f2ae2a3fbeec899ea7aeeac9f2
Improve dependency analysis; makes more dictionaries inlinable

I recentl changed the scoring system used by dependency analysis for
recursive bindings, that it used the *form* of the RHS of a binding,
rather than just its type. In doing so I inadvertently made recursive
dictionary bindings unravel less well, because I'd missed the case
of  c = /\a. C (...) (...)

This patch fixes the problem.  A good example is the instance for
Monad (ST s) or Show (ST s a) in GHC.ST.  It's vital for these
dictionaries to be inlinable.
compiler/simplCore/OccurAnal.lhs