[GHC] #9136: Constant folding in Core could be better
GHC
ghc-devs at haskell.org
Fri Jun 6 12:01:37 UTC 2014
#9136: Constant folding in Core could be better
--------------------------------------------+------------------------------
Reporter: simonpj | Owner: nomeata
Type: bug | Status: patch
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.2
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 simonpj):
I had a look and the patch seemed broadly OK, through rather under-
commented. Notably the parameters to the key function, whose name I now
forget, and a user-readable version of the rewrite that each block of code
performs.
Care is needed to be sure that the rewrites really are semantics
preserving, given that overflow may happen. It's probably ok because the
types involved do wrap-around, but that very point needs a careful `Note`
in the code.
By all means extend it further, but please do document it well.
One thing to bear in mind is that these rewrite rules are tried for every
single expression `(op a b)`, where `op` is (say) `Int#` addition, and
every single iteration of the simplifier. So it needs to fail fast if it
ends up doing nothing. An alternative would be an entirely separate pass,
which can then be as expensive as you like.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9136#comment:16>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list