• Sebastian Graf's avatar
    Always do the worker/wrapper split for NOINLINEs · 1675d40a
    Sebastian Graf authored
    Trac #10069 revealed that small NOINLINE functions didn't get split
    into worker and wrapper. This was due to `certainlyWillInline`
    saying that any unfoldings with a guidance of `UnfWhen` inline
    unconditionally. That isn't the case for NOINLINE functions, so we
    catch this case earlier now.
    
    Nofib results:
    
    --------------------------------------------------------------------------------
            Program         Allocs    Instrs
    --------------------------------------------------------------------------------
     fannkuch-redux          -0.3%      0.0%
                 gg          +0.0%     +0.1%
           maillist          -0.2%     -0.2%
            minimax           0.0%     -0.8%
    --------------------------------------------------------------------------------
                Min          -0.3%     -0.8%
                Max          +0.0%     +0.1%
     Geometric Mean          -0.0%     -0.0%
    
    Fixes #10069.
    
    -------------------------
    Metric Increase:
        T9233
    -------------------------
    1675d40a
Code owners : Ben Gamari
Main.hs 37.9 KB