Add -flate-specialise which runs a later specialisation pass
authorMatthew Pickering <matthewtpickering@gmail.com>
Mon, 19 Mar 2018 17:29:14 +0000 (13:29 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 19 Mar 2018 17:29:23 +0000 (13:29 -0400)
commitafad5561d88f04744c398ef0640d846db6262aa0
tree1eccb6f5d1daada6f4ef27d8e21596682332362e
parent2d4bda2e4ac68816baba0afab00da6f769ea75a7
Add -flate-specialise which runs a later specialisation pass

Runs another specialisation pass towards the end of the optimisation
pipeline. This can catch specialisation opportunities which arose from
the previous specialisation pass or other inlining.

You might want to use this if you are you have a type class method
which returns a constrained type. For example, a type class where one
of the methods implements a traversal.

It is not enabled by default or any optimisation level. Only by
manually enabling the flag `-flate-specialise`.

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4457
compiler/main/DynFlags.hs
compiler/simplCore/SimplCore.hs
docs/users_guide/using-optimisation.rst