
#8763: forM_ [1..N] does not get fused (10 times slower than go function) --------------------------------------------+------------------------------ Reporter: nh2 | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime performance bug | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by nomeata): It turns out that this comment is obsolete; the flag is never set. I quote from `SimplCore` {{{ -- Was: gentleFloatOutSwitches -- -- I have no idea why, but not floating constants to -- top level is very bad in some cases. -- -- Notably: p_ident in spectral/rewrite -- Changing from "gentle" to "constantsOnly" -- improved rewrite's allocation by 19%, and -- made 0.0% difference to any other nofib -- benchmark }}} This comment was introduced in eaeca51efc0be3ff865c4530137bfbe9f8553549 (2009) by SPJ. Maybe rules matching should look though unfoldings more easily (at the risk of losing sharing)? There is no point in worrying about sharing `[0..N]` in a rule application whose purpose is to eliminate that list. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8763#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler