Fix #13382: Put join ceiling underneath lambdas
authorLuke Maurer <maurerl@cs.uoregon.edu>
Mon, 13 Mar 2017 22:49:25 +0000 (18:49 -0400)
committerBen Gamari <ben@smart-cactus.org>
Mon, 13 Mar 2017 23:44:24 +0000 (19:44 -0400)
Test Plan: No new test (bug is latent)

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3285

compiler/simplCore/SetLevels.hs
testsuite/tests/perf/compiler/all.T

index 8822019..90e1d53 100644 (file)
@@ -1167,7 +1167,8 @@ lvlFloatRhs abs_vars dest_lvl env rec is_bot mb_join_arity rhs
     (body_env, bndrs') | Just _ <- mb_join_arity
                       = lvlJoinBndrs env1 dest_lvl rec all_bndrs
                       | otherwise
-                      = lvlLamBndrs (placeJoinCeiling env1) dest_lvl all_bndrs
+                      = case lvlLamBndrs env1 dest_lvl all_bndrs of
+                          (env2, bndrs') -> (placeJoinCeiling env2, bndrs')
         -- The important thing here is that we call lvlLamBndrs on
         -- all these binders at once (abs_vars and bndrs), so they
         -- all get the same major level.  Otherwise we create stupid
index 5a7614b..8b4ac08 100644 (file)
@@ -746,10 +746,12 @@ test('T9675',
           # 2015-07-11    56         (x86/Linux, 64-bit machine) use +RTS -G1
           ]),
        compiler_stats_num_field('bytes allocated',
-          [(wordsize(64), 731171072, 10)
+          [(wordsize(64), 656137960, 10)
           # 2014-10-13    544489040
           # 2015-10-28    608284152  emit Typeable at definition site
           # 2017-02-17    731171072  Type-indexed Typeable
+          # 2017-03-13    656137960  Put join ceiling underneath lambdas?
+
           ,(wordsize(32), 279480696, 10)
           # 2015-07-11    279480696  (x86/Linux, 64-bit machine) use +RTS -G1
           ]),