diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2014-09-19 14:51:54 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2014-09-23 10:35:47 +0100 |
commit | 5fa6e75960b3dddbc72c35eb3fc0f2759215dfbb (patch) | |
tree | b6c3ec95a2e799dc3199e05ae998f2301393f5eb /compiler/utils/FastFunctions.lhs | |
parent | 38cb5ec13ea7757edf99cda1de9303177b448b88 (diff) | |
download | haskell-5fa6e75960b3dddbc72c35eb3fc0f2759215dfbb.tar.gz |
Ensure that loop breakers are computed when glomming
This patch fixes Trac #9583, a loop in the simplifier.
I thought this was going to be very complicated but it turned out to
be very simple! The occurrence analyser does something called
"glomming" if the application of imported RULES means that something
that didn't look recursive becomes recursive. See `Note [Glomming]`
in `OccurAnal`. Under these circumstances we group all the top-level
bindings into a single massive `Rec`.
But, crucially, I failed to repeat the occurrence analysis on this
glommed set of bindings. That means that we weren't establishing the
right loop breakers (indeed there were no loop breakers whatsoever),
and that led immediately to the loop. The only surprising this is that
it didn't happen before.
Diffstat (limited to 'compiler/utils/FastFunctions.lhs')
0 files changed, 0 insertions, 0 deletions