diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2017-02-26 22:17:02 -0500 |
---|---|---|
committer | David Feuer <David.Feuer@gmail.com> | 2017-02-26 22:18:14 -0500 |
commit | 76f2cd02ab04818f19be1927c2a640dede3e9dd3 (patch) | |
tree | b11ae998c1e4ce582d67babb1bab2f996cf2ff70 /testsuite/tests | |
parent | 4f38fa100091152e6497db384af1fecd628e11e5 (diff) | |
download | haskell-76f2cd02ab04818f19be1927c2a640dede3e9dd3.tar.gz |
Occurrence-analyse the result of rule firings
When studying simplCore/should_compile/T7785 I found that a long
chain of maps
map f (map f (map f (map f (...))))
took an unreasonably long time to simplify. The problem got
worse when I started inlining in the InitialPhase, which is how
I stumbled on it.
The solution turned out to be rather simple. It's described in
Note [Occurence-analyse after rule firing]
in Simplify.hs
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3190
Diffstat (limited to 'testsuite/tests')
-rw-r--r-- | testsuite/tests/simplCore/should_compile/T3234.stderr | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/testsuite/tests/simplCore/should_compile/T3234.stderr b/testsuite/tests/simplCore/should_compile/T3234.stderr index ad31846bf6..e79bfbbc92 100644 --- a/testsuite/tests/simplCore/should_compile/T3234.stderr +++ b/testsuite/tests/simplCore/should_compile/T3234.stderr @@ -12,12 +12,15 @@ ==================== Grand total simplifier statistics ==================== Total ticks: 55 -15 PreInlineUnconditionally +18 PreInlineUnconditionally + 1 c 1 n 1 g 1 a 1 xs 1 ys + 1 c + 1 n 1 k 1 z 1 g @@ -28,11 +31,7 @@ Total ticks: 55 1 lvl 1 lvl 1 lvl -4 PostInlineUnconditionally - 1 c - 1 n - 1 c - 1 c +1 PostInlineUnconditionally 1 c 1 UnfoldingDone 1 GHC.Base.build 5 RuleFired 1 ++ @@ -67,6 +66,6 @@ Total ticks: 55 1 c 1 n 1 a -11 SimplifierDone 11 +10 SimplifierDone 10 |