Fix Trac #3591: very tricky specialiser bug
authorsimonpj@microsoft.com <unknown>
Fri, 23 Oct 2009 16:15:51 +0000 (16:15 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 23 Oct 2009 16:15:51 +0000 (16:15 +0000)
commitc43c981705ec33da92a9ce91eb90f2ecf00be9fe
treeef6725e233f3481f5121561671370f818c6ec2fa
parent0cffd31b0f25c2a31ed6eff2c0c0b1b1a8a8d507
Fix Trac #3591: very tricky specialiser bug

There was a subtle bug in the interation of specialisation and floating,
described in Note [Specialisation of dictionary functions].

The net effect was to create a loop where none existed before; plain wrong.

In fixing it, I did quite a bit of house-cleaning in the specialiser, and
added a lot more comments.  It's tricky, alas.
compiler/basicTypes/Id.lhs
compiler/specialise/Specialise.lhs