Skip to content
  • Simon Peyton Jones's avatar
    Fix some missed opportunities for preInlineUnconditionally · 15d2340c
    Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
    There are two signficant changes here:
    
    * Ticket #18815 showed that we were missing some opportunities for
      preInlineUnconditionally.  The one-line fix is in the code for
      GHC.Core.Opt.Simplify.Utils.preInlineUnconditionally, which now
      switches off only for INLINE pragmas.  I expanded
      Note [Stable unfoldings and preInlineUnconditionally] to explain.
    
    * When doing this I discovered a way in which preInlineUnconditionally
      was occasionally /too/ eager.  It's all explained in
      Note [Occurrences in stable unfoldings] in GHC.Core.Opt.OccurAnal,
      and the one-line change adding markAllMany to occAnalUnfolding.
    
    I also got confused about what NoUserInline meant, so I've renamed
    it to NoUserInlinePrag, and changed its pretty-printing slightly.
    That led to soem error messate wibbling, and touches quite a few
    files, but there is no change in functionality.
    
    I did a nofib run.  As expected, no significant changes.
    
            Program           Size    Allocs
    ----------------------------------------
             sphere          -0.0%     -0.4%
    ----------------------------------------
                Min          -0.0%     -0.4%
                Max          -0.0%     +0.0%
     Geometric Mean          -0.0%     -0.0%
    
    I'm allowing a max-residency increase for T10370, which seems
    very irreproducible. (See comments on !4241.)  There is always
    sampling error for max-residency measurements; and in any case
    the change shows up on some platforms but not others.
    
    Metric Increase:
        T10370
    15d2340c