diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2017-06-07 12:03:51 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2017-06-07 13:27:14 +0100 |
commit | 2b74bd9d8b4c6b20f3e8d9ada12e7db645cc3c19 (patch) | |
tree | 8b2df37023fa2868c0c2666ab00fb46cb7cdb323 /libraries/integer-simple | |
parent | 92a4f908f2599150bec0530d688997f03780646e (diff) | |
download | haskell-2b74bd9d8b4c6b20f3e8d9ada12e7db645cc3c19.tar.gz |
Stop the specialiser generating loopy code
This patch fixes a bad bug in the specialiser, which showed up as
Trac #13429. When specialising an imported DFun, the specialiser could
generate a recusive loop where none existed in the original program.
It's all rather tricky, and I've documented it at some length in
Note [Avoiding loops]
We'd encoutered exactly this before (Trac #3591) but I had failed
to realise that the very same thing could happen for /imported/
DFuns.
I did quite a bit of refactoring.
The compiler seems to get a tiny bit faster on
deriving/perf/T10858
but almost all the gain had occurred before now; this
patch just pushed it over the line.
Diffstat (limited to 'libraries/integer-simple')
0 files changed, 0 insertions, 0 deletions