Implement deterministic CallInfoSet
authorBartosz Nitka <niteria@gmail.com>
Mon, 6 Jun 2016 11:36:21 +0000 (04:36 -0700)
committerBartosz Nitka <niteria@gmail.com>
Mon, 25 Jul 2016 14:41:26 +0000 (07:41 -0700)
commitd563710d4277897b4704e7e116d2a805de0ec962
treee1634c70e05dc0a4cc049c7847abf3e7b9974622
parent2d3e064dd5d726c106537e1e65926b991275ba16
Implement deterministic CallInfoSet

We need CallInfoSet to be deterministic because it determines the
order that the binds get generated.

Currently it's not deterministic because it's keyed on
`CallKey = [Maybe Type]` and `Ord CallKey` is implemented
with `cmpType` which is nondeterministic.

See Note [CallInfoSet determinism] for more details.

Test Plan: ./validate

Reviewers: simonpj, bgamari, austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2242

GHC Trac Issues: #4012

(cherry picked from commit 48e9a1f5521fa3185510d144dd28a87e452ce134)
compiler/specialise/Specialise.hs