Always do the worker/wrapper split for NOINLINEs

Authored by sgraf on Feb 19 2019, 6:52 AM.

Description

Always do the worker/wrapper split for NOINLINEs

Trac 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 Trac #10069.


Metric Increase:

T9233

Details

Committed
Marge Bot <ben+marge-bot@smart-cactus.org>Mar 7 2019, 7:44 PM
Parents
rGHC068b7e983f4a: Fix #16391 by using occCheckExpand in TcValidity
Branches
Unknown
Tags
Unknown
Marge Bot <ben+marge-bot@smart-cactus.org> committed rGHC1675d40afe07: Always do the worker/wrapper split for NOINLINEs (authored by sgraf).Mar 7 2019, 7:44 PM