Improve SpecConstr when there are many opportunities
authorSimon Peyton Jones <simonpj@microsoft.com>
Thu, 27 Apr 2017 10:15:00 +0000 (11:15 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 2 May 2017 07:57:42 +0000 (08:57 +0100)
commitc46a600f320b25e0ac73107acdb12a33d7fbd9c3
tree5e48b462d6c6fe575b823bccf7907ce079babc44
parent3746f623b3939ae81a0d5bf99d9758eb8bfcb7b0
Improve SpecConstr when there are many opportunities

SpecConstr has -fspec-contr-count=N which limits the maximum
number of specialisations we make for any particular function.
But until now, if that limit was exceeded we discarded all the
candidates!  So adding a new specialisaiton opportunity (by
adding a new call site, or improving the optimiser) could result
in less specialisation and worse performance.

This patch instead picks the top N candidates, resulting in
less brittle behaviour.

See Note [Choosing patterns].
compiler/specialise/SpecConstr.hs