Skip to content
  • Simon Peyton Jones's avatar
    Be a bit more eager to inline in a strict context · 29d88ee1
    Simon Peyton Jones authored
    If we see f (g x), and f is strict, we want to be a bit more eager to
    inline g, because it may well expose an eval (on x perhaps) that can
    be eliminated or shared.
    
    I saw this in nofib boyer2, function RewriteFuns.onewayunify1.  It
    showed up as a consequence of the preceding patch that makes the
    simplifier do less work (Trac #13379).  We had
    
       f d (g x)
    
    where f was a class-op. Previously we simplified both d and
    (g x) with a RuleArgCtxt (making g a bit more eager to inline).
    But now we simplify only d that way, then fire the rule, and
    only then simplify (g x).  Firing the rule produces a strict
    funciion, so we want to make a strict function encourage
    inlining a bit.
    29d88ee1