[project @ 2003-08-15 11:31:02 by simonmar]
authorsimonmar <unknown>
Fri, 15 Aug 2003 11:31:02 +0000 (11:31 +0000)
committersimonmar <unknown>
Fri, 15 Aug 2003 11:31:02 +0000 (11:31 +0000)
commit060cb7d9e3a84fc00b5bdbaa0cb31cebb554b20c
tree27d273a15d3fb626db70b01c1e6dec86c56a580a
parent247e8ad162edd7fb57396193aacfc5d7c56a2727
[project @ 2003-08-15 11:31:02 by simonmar]
Fix a cause of non-linearity when compiling code with large amounts of
static data, such as long lists of integers.

The problem was that CorePrep was calling allLazy on the list of
floated bindings at each level of a nested let, and allLazy runs over
all the bindings floated so far, hence O(n^2) performance.  The fix is
to cache the result of allLazy along with the list of floated
bindings.
ghc/compiler/coreSyn/CorePrep.lhs