Improve the simple optimiser
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 7 Feb 2017 00:32:43 +0000 (00:32 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 8 Feb 2017 11:33:32 +0000 (11:33 +0000)
commit8e9593fb2147252ecb8b685ef6bf9c0237a71219
treec7c1e4242792b5c668193736eaad1df2ce762739
parentb990f656091cb6c960fb21f05791acf38a19abc1
Improve the simple optimiser

The previous version of the simple optimiser would leave
beta-redexes, which was bad for join points.  E.g.

  join j x = ....   -- a join point
  in (\x. j x) y

This would be ok if we beta-reduced the (\x) but not if
we don't.

This patch improves the simple optimiser, to follow the plan
described in "Secrets of the GHC inliner", and implemented in
the Mighty Simplifier.  It turns out not to be too hard to
use the same plan here, and we get slightly better code as
a result.
compiler/coreSyn/CoreSubst.hs