Skip to content
  • Simon Peyton Jones's avatar
    Make FloatOut/SetLevels idemoptent on bottoming functions · fb9ae288
    Simon Peyton Jones authored
    This fixes Trac #13369.  It turned out that I really had got the
    bottoming-float code wrong, again.  The new story is explained in
    Note [Bottoming floats], esp item (3), and Note [Floating from a RHS].
    
    I didn't make a regression test; it's hard to to so.
    
    Nofib result are good
    
    --------------------------------------------------------------------------------
            Program           Size    Allocs   Runtime   Elapsed  TotalMem
    --------------------------------------------------------------------------------
             banner          -2.2%     -4.6%      0.00      0.00     +0.0%
               bspt          -1.3%     -1.6%      0.01      0.01     +0.0%
          cacheprof          -1.8%     -0.3%     +3.7%     +3.7%     -0.9%
       digits-of-e2          -1.0%     -1.5%     -0.5%     -0.5%     +0.0%
             expert          -1.3%     -0.2%      0.00      0.00     +0.0%
             n-body          -1.1%     -0.2%     +0.1%     +0.1%     +0.0%
            veritas          -2.9%     -0.1%      0.00      0.00     +0.0%
    --------------------------------------------------------------------------------
                Min          -2.9%     -4.6%     -7.4%     -7.4%    -19.8%
                Max          -1.0%     +0.0%     +5.2%     +5.1%    +10.0%
     Geometric Mean          -1.2%     -0.1%     +0.5%     +0.5%     -0.1%
    
    I /think/ all this is due to this error-floating change; but it's possible
    that some was due to commit "Fix CSE (again) on literal strings" a couple
    of commits earlier.
    fb9ae288