diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2022-08-25 15:54:51 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-10-11 12:49:21 -0400 |
commit | caced75765472a1a94453f2e5a439dba0d04a265 (patch) | |
tree | d83c65272aeb12d7f330bd9cdf77b0db1180a9ad /config.guess | |
parent | 9789ea8e9f35d5c0674e10730c3435c4d3293f2b (diff) | |
download | haskell-caced75765472a1a94453f2e5a439dba0d04a265.tar.gz |
Don't keep exit join points so much
We were religiously keeping exit join points throughout, which
had some bad effects (#21148, #22084).
This MR does two things:
* Arranges that exit join points are inhibited from inlining
only in /one/ Simplifier pass (right after Exitification).
See Note [Be selective about not-inlining exit join points]
in GHC.Core.Opt.Exitify
It's not a big deal, but it shaves 0.1% off compile times.
* Inline used-once non-recursive join points very aggressively
Given join j x = rhs in
joinrec k y = ....j x....
where this is the only occurrence of `j`, we want to inline `j`.
(Unless sm_keep_exits is on.)
See Note [Inline used-once non-recursive join points] in
GHC.Core.Opt.Simplify.Utils
This is just a tidy-up really. It doesn't change allocation, but
getting rid of a binding is always good.
Very effect on nofib -- some up and down.
Diffstat (limited to 'config.guess')
0 files changed, 0 insertions, 0 deletions