Substantial improvement to the interaction of RULES and inlining
authorsimonpj@microsoft.com <unknown>
Mon, 29 Oct 2007 11:10:56 +0000 (11:10 +0000)
committersimonpj@microsoft.com <unknown>
Mon, 29 Oct 2007 11:10:56 +0000 (11:10 +0000)
commitcc51a698c0938edaa3ccc95db19150bbaec6f795
treeaea4a82f1002aba6bf486ffc05afbc0e0baafc3e
parent925cfa7c7e46494ff5c579214b6f2e4b840eb5b2
Substantial improvement to the interaction of RULES and inlining

(Merge to 6.8 branch after testing.)

There were a number of delicate interactions between RULEs and inlining
in GHC 6.6.  I've wanted to fix this for a long time, and some perf
problems in the 6.8 release candidate finally forced me over the edge!

The issues are documented extensively in OccurAnal, Note [Loop breaking
and RULES], and I won't duplicate them here.  (Many of the extra lines in
OccurAnal are comments!)

This patch resolves Trac bugs #1709, #1794, #1763, I believe.
compiler/basicTypes/BasicTypes.lhs
compiler/simplCore/OccurAnal.lhs
compiler/simplCore/SimplEnv.lhs
compiler/simplCore/Simplify.lhs