Add NOINLINE pragma to builtinRules
authorBen Gamari <bgamari.foss@gmail.com>
Mon, 25 Sep 2017 22:34:21 +0000 (18:34 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 26 Sep 2017 02:43:52 +0000 (22:43 -0400)
As mentioned in #14275, GHC will otherwise decide to produce unfoldings
for this rather large binding, making recompilation more expensive than
necessary. Since inlining is almost certainly not fruitful mark it as
NOINLINE.

[skip ci]

Test Plan: Validate

Reviewers: austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #14275

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

compiler/prelude/PrelRules.hs

index fc211f4..babfe4b 100644 (file)
@@ -1002,6 +1002,9 @@ builtinRules
         ]
      ]
  ++ builtinIntegerRules
+{-# NOINLINE builtinRules #-}
+-- there is no benefit to inlining these yet, despite this, GHC produces
+-- unfoldings for this regardless since the floated list entries look small.
 
 builtinIntegerRules :: [CoreRule]
 builtinIntegerRules =