Skip to content

Don't keep exit join points so much

Simon Peyton Jones requested to merge wip/T22084 into master

Fixes #22084 (closed).

Two patches

commit 0f8cab9eef25cca2f4c7535b3f65544c57dddb85 (HEAD -> wip/T22084)
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Thu Sep 29 15:20:01 2022 +0100

    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.)
    
    This is just a tidy-up really.  It doesn't change allocation, but
    getting rid of a binding is always good.

commit 9abcc262d1379c187ac9bf6d17d2458d7ba7e212
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Thu Aug 25 15:54:51 2022 +0100

    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 arranges that exit join points are inhibited from inlining
    only in /one/ Simplifier pass (right after Exitification).
    
    It's not a big deal, but it shaves 0.1% off compile times.
Edited by Simon Peyton Jones

Merge request reports