Improve list fusion for [n::Integer..m]
authorJoachim Breitner <mail@joachim-breitner.de>
Fri, 14 Feb 2014 09:17:22 +0000 (09:17 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Fri, 14 Feb 2014 09:34:27 +0000 (09:34 +0000)
commita60eeccf06c28bee3b87c561450320d17c7399e3
tree0b2e7e6b3d7e1fbd5e660aa6d6fd6e1647ad9492
parent4651b6a5508b796dac9c5c6d061176f0e561a273
Improve list fusion for [n::Integer..m]

enumFromTo for Integers goes via enumDeltaToInteger, which is less
efficient, as the "delta > = 0" check prevents more inlining which is
required for good fusion code. This rule avoids tihs check for the
common case of "delta = 1", makes up_fb visible and hence inlineable,
which greatly improves "length [n:Integer..m]"; even more so with
CallArity enabled. (#8766)
GHC/Enum.lhs