simonmar 2005/08/03 06:53:37 PDT
Modified files:
ghc/compiler/basicTypes BasicTypes.lhs IdInfo.lhs
ghc/compiler/coreSyn CoreUnfold.lhs CoreUtils.lhs
ghc/compiler/simplCore OccurAnal.lhs SimplUtils.lhs
Simplify.lhs
Log:
Patch from SimonPJ (slightly tweaked by me after checking performance
results):
Fix occasional O(n^2) behaviour in the simplifier. There was a
possibility that by inlining a binding, we could re-simplify an
arbitrary sized expression. This patch fixes it by moving the
inlining of arbitrary-sized expressiong to the binding site
(preInlineUnconditionally), so the decision to inline happens before
simplifying the RHS. To do this, we have to collect more information
during the occurrence analysis phase.
We still make inlining decisions at the call site, but they are always
size-limited, so we can't get quadratic blowup.
Revision Changes Path
1.38 +25 -12 fptools/ghc/compiler/basicTypes/BasicTypes.lhs
1.121 +4 -4 fptools/ghc/compiler/basicTypes/IdInfo.lhs
1.101 +28 -49 fptools/ghc/compiler/coreSyn/CoreUnfold.lhs
1.136 +5 -1 fptools/ghc/compiler/coreSyn/CoreUtils.lhs
1.78 +23 -26 fptools/ghc/compiler/simplCore/OccurAnal.lhs
1.100 +66 -48 fptools/ghc/compiler/simplCore/SimplUtils.lhs
1.160 +19 -8 fptools/ghc/compiler/simplCore/Simplify.lhs
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc